C#程序由以下人员调用:
Application.Run (new formClass ());
我想在整个过程中尝试使用try / catch来捕获任何未捕获的异常。当我把它放在这个Run方法时,不会捕获异常;当程序在未捕获的异常之后终止时,控制仅返回此处。
在哪里可以使用try / catch来覆盖整个程序?谢谢!
答案 0 :(得分:37)
捕获Windows Form的未处理异常连接
AppDomain.UnhandledException
和Application.ThreadException
事件。
答案 1 :(得分:8)
基本上,在使用默认CLR托管过程时,您无法捕获所有异常。期。这是因为AppDomain.UnhandledException
事件只是一个通知,您无法处理异常(这意味着您无法阻止在处理通知后终止应用程序)。
但是,您可以使用其Application.ThreadException
处理程序(以及control the behavior通过UnhandledExceptionMode
)来捕获并处理WinForms应用程序的UI线程中的所有异常。引发异常的其他线程将不会被此处理程序捕获。
一般来说,尝试处理所有异常并不是一个好主意。但是,您可以使用
AppDomain.UnhandledException
记录错误和/或执行重要的清理任务(例如,关闭基于文件的数据库或其他任何内容)。