无法从Form.Show中捕获异常

时间:2016-06-13 19:17:55

标签: c# winforms exception-handling

我有两种形式。我的第一个表单上有一个按钮,单击按钮时应加载第二个表单。第二种形式在其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");
   }
}

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

1 个答案:

答案 0 :(得分:0)

当您显示第二个表单时,可以使用ShowDialog(this)而不是Show方法,以使第一个表单控制第二个表单。 无论是使用ShowDialog(这个),你都可以使用例外。我认为这个问题已经有了答案here