我已经用“加载”事件
的形式编写了这段代码 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事件添加相同的代码时,它会显示错误。
你能帮助我为什么会这样吗?
我没有找到任何答案:(
答案 0 :(得分:0)
您使用哪些UI框架?一些.Net UI框架确实为您提供了一些“加载”事件,但也有一些事件发生在您的偶数处理程序中发生的所有异常,“为最终用户提供更好的UI体验”。
您可以轻松检查调试器下的OUTPUT面板中是否抛出任何异常。如果您看到任何“第一次机会异常” - 那么在这里您拥有它,您的UI框架是“安静的”。
添加try-catch,或添加application.unhandledexception eventhandler,并尝试使用您安静的UI ..
如果我没记错的话,WPF喜欢默默地跳过异常,而WinForms则会立即崩溃。但我可能在这里错了。