如何尝试/捕获所有异常

Dea*_*naD 3 c# exception-handling win-universal-app uwp

我正在完成由其他人启动的UWP应用程序.该应用程序经常崩溃,我总是在App.gics中结束

if (global::System.Diagnostics.Debugger.IsAttached)
    global::System.Diagnostics.Debugger.Break(); 
Run Code Online (Sandbox Code Playgroud)

然后,我必须说"不,不要启动调试器"并关闭2个窗口.

有什么地方我可以放一个大尝试/捕获,这样我不必每次都发生时重启应用程序?我找不到任何东西AppShellApp.

或者我是否必须在每个事件处理程序中放置一个try/catch?

Jay*_*Zuo 11

如果您希望每次遇到未处理的异常时都避免启动新调试器并重新启动应用程序,则可以使用Application.UnhandledException事件并将事件参数的Handled属性设置为true,如下所示:

public App()
{
    this.InitializeComponent();
    this.Suspending += OnSuspending;
    this.UnhandledException += (sender, e) =>
    {
        e.Handled = true;
        System.Diagnostics.Debug.WriteLine(e.Exception);
    };
}
Run Code Online (Sandbox Code Playgroud)

UnhandledException事件被用于通知有关由XAML框架或通过Windows运行时,一般还没有被应用程序代码来处理遇到的异常的应用程序.

通常在触发UnhandledException事件之后,Windows运行时终止应用程序,因为未处理异常.应用程序代码对此有一些控制:如果UnhandledException事件处理程序将事件参数的Handled属性设置为true,那么在大多数情况下,应用程序将不会终止.

欲了解更多信息,请参见备注Application.UnhandledException事件和博客:在您的Windows应用商店的应用程序处理错误的策略.