我有两种形式。 我的第一个窗体上有一个按钮,单击按钮时应该加载第二个窗体。 第二个窗体在其 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)也无法解决异常。我认为这个问题在这里已经有了答案