.net - 表单加载事件中未处理的异常

标签 .net exception event-handling

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

这种行为是否真的发生在所有事件处理程序中?这是预期的行为吗?如果是这样,是不是因为如果事件处理程序意外停止,发生坏事的风险太大了?

最佳答案

无论是在 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 事件处理程序。

关于.net - 表单加载事件中未处理的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15281848/

相关文章:

C# 获取枚举值

.net - 在长时间运行的操作中管理 NHibernate session

c# - SQL BulkCopy 与 OPENDATASOURCE 哪个更快

.net - 众所周知的 "Process is terminated due to StackOverflowException"屏幕是怎么出现的?

jquery - 在 jQuery 中的同一 div 中分离 "click on text"和 "click on background"事件

c# - WCF OperationContract 属性忘记值

javascript - 使用 ajax : possible? 记录 try{ ... } catch(e){ ... }

VSCODE : how to ignore exceptions 中的 PHP 7 Xdebug

python - 使用 Kivy 为同一事件添加多个处理程序的最佳/正确方法是什么?

ios - 检测点击 UIView 的 "empty space"