无法从 Form.Show 捕获异常



我有两种形式。 我的第一个窗体上有一个按钮,单击按钮时应该加载第二个窗体。 第二个窗体在其 Load 事件中引发异常。 显示第二个窗体的代码位于 try-catch 块中。 但是,该 try-catch 块中没有捕获异常,并且当我单击该按钮时,我会收到一个"未处理的异常"窗口。 代码如下:

public partial class FirstForm : Form
{
   private void button_Click(object sender, EventArgs e)
   {
      try
      {
         // Showing this form will throw an exception
         SecondForm form = new SecondForm();
         form.Show();
      }
      catch (Exception ex)
      {
         // The exception is not caught here
         MessageBox.Show(ex.ToString());
      }
   } 
}
public partial class SecondForm : Form
{
   // Throw an exception when this form is shown
   private void form_Load(object sender, EventArgs e)
   {
      throw new Exception("something");
   }
}

为什么我的代码中没有捕获异常?

当你显示第二个表单时,你可以使用 ShowDialog(this) istead of Show 方法,使第一个表单控制第二个表单。使用ShowDialog(this)也无法解决异常。我认为这个问题在这里已经有了答案

最新更新