TAP全局异常处理程序

TAP全局异常处理程序

此代码抛出异常。是否可以定义将捕获它的应用程序全局处理程序?

string x = await DoSomethingAsync();

使用.net 4.5 / WPF


料青山看我应如是
浏览 343回答 3
3回答

梵蒂冈之花

将事件绑定到AppDomain.CurrentDomain.FirstChanceException将保证您将捕获您的异常。正如@Noseratio指出的那样,即使在catch块中正常处理异常并且应用程序继续执行,您也会收到应用程序中的每个异常的通知。但是,我仍然看到此事件对于至少捕获应用程序暂停之前抛出的最后几个异常或者某些其他调试方案非常有用。如果你想保护自己免受这种伤害string x = await DoSomethingAsync();我给你的建议是,不要这样做,添加一个try catch块:-)

手掌心

在.NET 4.5&nbsp;async代码中,您可以通过注册TaskScheduler.UnobservedTaskException事件的处理程序来处理未观察到的异常。如果您不访问属性而您没有调用Task.Result,则认为异常未被观察到。Task.ExceptionTask.Wait在未观察到的异常到达TaskScheduler.UnobservedTaskException事件处理程序之后,默认行为是吞下此异常,以便程序不会崩溃。可以通过添加以下内容在配置文件中更改此行为:<configuration>&nbsp; &nbsp;&nbsp;&nbsp;<runtime>&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<ThrowUnobservedTaskExceptions&nbsp;enabled="true"/>&nbsp; &nbsp;&nbsp;&nbsp;</runtime>&nbsp;</configuration>
打开App,查看更多内容
随时随地看视频慕课网APP