代码是错误的,但不会引发错误

本文关键字:错误 代码 | 更新日期: 2023-09-27 18:10:56

我已经在我的表单"Load" Event中编写了这段代码

        MessageBox.Show("Message 1");
        string strConnectionString = @"Data Source=HB-VAIO'SQLEXPRESS;Initial Catalog=DB1;Integrated Security=True;Pooling=False";
        SqlCommand cmdAddPackage = new SqlCommand("AddPackage");
        SqlConnection con = new SqlConnection();
        con.ConnectionString = strConnectionString;
        cmdAddPackage.CommandType = CommandType.StoredProcedure;
        cmdAddPackage.Parameters.Add(new SqlParameter("@GUIDOutput",SqlDbType.UniqueIdentifier)).Direction = ParameterDirection.Output;
        Guid GUI = (Guid) cmdAddPackage.ExecuteScalar();   // Error should be raised but there is no error
        MessageBox.Show(GUI.ToString());
        cmdAddPackage.Connection.Close();
        textBox1.Text = GUI.ToString();
        MessageBox.Show("end");

我知道代码是错误的!并且应该引发"Cannot open database "DB1"。登录失败。用户"HB-VAIO'SONY"登录失败。在第8行中,但是当我运行程序时没有引发错误,弹出第一个消息框,但没有第二个和第三个消息框的迹象,表单加载成功。

错误的代码是:

  • 我的数据库名称是"DB",但在此代码中我使用了"DB1"。

  • 没有设置cmdAddPackage的连接

当我向button1_Click事件添加相同的代码时,它显示错误。

你能告诉我为什么会这样吗?

我没有找到任何答案:

代码是错误的,但不会引发错误

你使用什么UI框架?一些。net UI框架确实为你提供了一些"Load"事件,但也有一些碰巧在你的even处理程序期间发生的所有异常都沉默,"为最终用户提供更好的UI体验"。

您可以很容易地检查是否在调试器下的OUTPUT面板中抛出任何异常。如果你看到任何"第一次机会异常"——那么你有它了,你的UI框架是"安静的"。

添加try-catch或添加应用程序。unhandledexeption eventandler,并尽量忍受安静的UI.

如果我没记错的话,WPF喜欢默默地跳过异常,而WinForms倾向于立即崩溃。但我可能错了。