【发布时间】:2012-01-12 22:35:22
【问题描述】:
我正在尝试这样做:
我正在创建另一个表单,它的 FormClosed 方法会引发异常,应该被主表单捕获。
主窗体:
try
{
frmOptions frm = new frmOptions();
frm.ShowDialog();
}
catch(Exception)
{
MessageBox.Show("Exception caught.");
}
frmOptions:
private void frmOptions_FormClosed(object sender, FormClosedEventArgs e)
{
throw new Exception();
}
调试器停止异常并显示以下消息:
用户代码未处理异常
为什么?我在创建它的对象的所有者中捕获了异常。有人有想法吗?
【问题讨论】:
-
请不要将C#放在标题中。这就是标签的用途。
-
我不明白你描述的问题。我认为问题确实存在,因为 frmOptions 在不同的线程上运行,但显然情况并非如此。我能够捕捉到没有问题的异常。我针对 .NET 2 和 4 进行了测试。
-
@Icarus:转到调试器 -> 异常 -> 全部重置。然后再试一次,你会得到用户代码未处理的异常。
-
@makmiler:做到了。相同的非问题。
-
@Icarus 好吧,我使用 VS 2010 和 .net 4,所以它发生了。其他人也有同样的错误。为什么你没有看到消息,我真的不知道。
标签: c# winforms exception exception-handling