【问题标题】:Exception not handled in Form Load Event表单加载事件中未处理的异常
【发布时间】:2013-03-07 21:12:17
【问题描述】:

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

这种行为是否确实发生在所有事件处理程序中?这是预期的行为吗?如果是这样,是不是因为如果事件处理程序意外停止,就会有太多坏事发生的危险?

【问题讨论】:

  • 您是否可能创建了 UnhandledThreadExceptionEventHandler?
  • 从我读到的,这看起来和这个[问题]stackoverflow.com/questions/10647551/…的问题是一样的
  • 感谢您的回复。您引用的问题似乎是在讨论在 Visual Studio 中调试时的行为。我在 VS 内部和外部都观察到了这种行为。不过,我承认,这两次都是调试版本。我没有在发布版本中尝试我的测试。

标签: .net exception event-handling


【解决方案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 事件处理程序。

【讨论】:

    猜你喜欢
    • 2016-12-27
    • 1970-01-01
    • 1970-01-01
    • 2013-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-01
    相关资源
    最近更新 更多