代码错误但没有引发错误

时间:2013-04-25 13:16:56

标签: c#

我已经用“加载”事件

的形式编写了这段代码
        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");

我知道代码错误!它应该引发 “无法打开登录请求的数据库”DB1“。登录失败。用户'HB-VAIO \ SONY'登录失败。” 第8行,但是当我运行程序时没有出现错误,第一个消息框弹出,但没有第二个和第三个消息框的符号,表单加载成功。

代码的错误是这些:

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

  • 未设置cmdAddPackage的连接。

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

你能帮助我为什么会这样吗?

我没有找到任何答案:(

1 个答案:

答案 0 :(得分:0)

您使用哪些UI框架?一些.Net UI框架确实为您提供了一些“加载”事件,但也有一些事件发生在您的偶数处理程序中发生的所有异常,“为最终用户提供更好的UI体验”。

您可以轻松检查调试器下的OUTPUT面板中是否抛出任何异常。如果您看到任何“第一次机会异常” - 那么在这里您拥有它,您的UI框架是“安静的”。

添加try-catch,或添加application.unhandledexception eventhandler,并尝试使用您安静的UI ..

如果我没记错的话,WPF喜欢默默地跳过异常,而WinForms则会立即崩溃。但我可能在这里错了。