是否可以尝试/捕获整个C#程序?

use*_*493 23 c# exception-handling try-catch

AC#程序由以下方式调用:

Application.Run (new formClass ());
Run Code Online (Sandbox Code Playgroud)

我想在整个过程中尝试/捕获任何未捕获的异常.当我把它放在这个Run方法时,不会捕获异常; 当程序在未捕获的异常之后终止时,控制仅返回此处.

我在哪里可以使用try/catch来覆盖整个程序?谢谢!

Mit*_*eat 38

捕获Windows窗体的未处理异常连接 AppDomain.UnhandledExceptionApplication.ThreadException事件.

有趣的是:托管应用程序中的意外错误

  • @alankdkd:确保你读到最后和"一些最佳实践"部分;) (2认同)

Luc*_*ero 8

基本上,在使用默认CLR托管过程时,您无法捕获所有异常.期.这是因为AppDomain.UnhandledException事件只是一个通知,您无法处理异常(这意味着您无法阻止应用程序在处理通知后被终止).

但是,您可以使用其Application.ThreadException处理程序(并通过控制行为UnhandledExceptionMode)捕获并处理WinForms应用程序的UI线程中的所有异常.其他抛出异常的线程将不会被此处理程序捕获.

一般来说,尝试处理所有异常并不是一个好主意.但是,您可以使用它 AppDomain.UnhandledException来记录错误和/或执行重要的清理任务(例如,关闭基于文件的数据库或者任何事情).