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

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

Application.Run (new formClass ()); 

我想对整个事情进行尝试/捕获以捕获任何未捕获的exception。 当我把它放在这个Run方法时,不会捕获exception; 当程序在未捕获的exception之后终止时,控制仅返回此处。

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

捕获Windows Form的未处理exception,将AppDomain.UnhandledExceptionApplication.ThreadException事件挂钩。

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

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

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

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