表单加载事件中未处理异常

时间:2013-03-07 21:12:17

标签: .net exception event-handling

我刚刚在.Net中遇到异常处理的奇怪行为。 (我在MS Visual Studio 2008中使用C#,但我在这里看到的一个问题似乎暗示我在整个.Net世界中看到的都是真的。)我正在编写一个简单的WinForm应用程序。我故意导致在任何try块之外的form_load事件处理程序中抛出未处理的异常。我没有得到通知。如果在正常方法中发生未处理的异常,则会弹出一条消息,告诉我发生了异常,并向我提供了有关该问题的一些信息。但是在处理程序中,代码只是悄悄退出函数而不让任何人知道它发生了。如果我添加一个try / catch块,则会按预期捕获异常。

在所有事件处理程序中都会发生此行为吗?这是预期的行为吗?如果是这样,是因为如果事件处理程序意外停止会发生不良事件的危险吗?

1 个答案:

答案 0 :(得分:1)

无论是在VS内部还是外部,当进程附加调试器时都会发生此行为。但是,作为调试版本没有任何区别。如果在没有附加调试器的情况下在VS 之外运行,则会触发未处理的异常。 你可以检查

Why the form load can't catch exception?,和 VS2010 does not show unhandled exception message in a WinForms Application on a 64-bit version of Windows,可能的解决方案。

编辑:据我所知,此行为仅适用于form_load事件处理程序。