我刚刚在.Net 中遇到了异常处理的奇怪行为。(我在 MS Visual Studio 2008 中使用 C#,但我在这里看到的一个问题似乎暗示我所看到的在整个 .Net 世界中都是正确的。)我正在编写一个普通的 WinForm 应用程序。我故意在任何 try 块之外的 form_load 事件处理程序中引发未处理的异常。我没有收到任何通知。如果在正常方法中发生未处理的异常,则会弹出一条消息,告诉我发生了异常,并提供有关问题的一些信息。但是在处理程序中,代码只是悄悄地退出函数,而不让任何人知道它发生了。如果我添加一个 try/catch 块,则会按预期捕获异常。
这种行为是否确实发生在所有事件处理程序中?这是预期的行为吗?如果是这样,是不是因为如果事件处理程序意外停止,就会有太多坏事发生的危险?