代码是错误的,但不会引发错误
本文关键字:错误 代码 | 更新日期: 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倾向于立即崩溃。但我可能错了。