为了账号安全,请及时绑定邮箱和手机立即绑定

TAP全局异常处理程序

TAP全局异常处理程序

慕村225694 2019-07-25 09:23:58
TAP全局异常处理程序此代码抛出异常。是否可以定义将捕获它的应用程序全局处理程序?string x = await DoSomethingAsync();使用.net 4.5 / WPF
查看完整描述

3 回答

?
MYYA

TA贡献1868条经验 获得超4个赞

将事件绑定到AppDomain.CurrentDomain.FirstChanceException将保证您将捕获您的异常。正如@Noseratio指出的那样,即使在catch块中正常处理异常并且应用程序继续执行,您也会收到应用程序中的每个异常的通知。

但是,我仍然看到此事件对于至少捕获应用程序暂停之前抛出的最后几个异常或者某些其他调试方案非常有用。

如果你想保护自己免受这种伤害

string x = await DoSomethingAsync();

我给你的建议是,不要这样做,添加一个try catch块:-)


查看完整回答
反对 回复 2019-07-25
?
Qyouu

TA贡献1786条经验 获得超11个赞

在.NET 4.5 async代码中,您可以通过注册TaskScheduler.UnobservedTaskException事件的处理程序来处理未观察到的异常。如果您不访问属性而您没有调用Task.Result,则认为异常未被观察到。Task.ExceptionTask.Wait

在未观察到的异常到达TaskScheduler.UnobservedTaskException事件处理程序之后,默认行为是吞下此异常,以便程序不会崩溃。可以通过添加以下内容在配置文件中更改此行为:

<configuration> 
   <runtime> 
      <ThrowUnobservedTaskExceptions enabled="true"/> 
   </runtime> </configuration>


查看完整回答
反对 回复 2019-07-25
  • 3 回答
  • 0 关注
  • 548 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信