3 回答

TA貢獻(xiàn)1868條經(jīng)驗(yàn) 獲得超4個(gè)贊
將事件綁定到AppDomain.CurrentDomain.FirstChanceException
將保證您將捕獲您的異常。正如@Noseratio指出的那樣,即使在catch塊中正常處理異常并且應(yīng)用程序繼續(xù)執(zhí)行,您也會(huì)收到應(yīng)用程序中的每個(gè)異常的通知。
但是,我仍然看到此事件對于至少捕獲應(yīng)用程序暫停之前拋出的最后幾個(gè)異常或者某些其他調(diào)試方案非常有用。
如果你想保護(hù)自己免受這種傷害
string x = await DoSomethingAsync();
我給你的建議是,不要這樣做,添加一個(gè)try catch塊:-)

TA貢獻(xiàn)1786條經(jīng)驗(yàn) 獲得超11個(gè)贊
在.NET 4.5 async
代碼中,您可以通過注冊TaskScheduler.UnobservedTaskException
事件的處理程序來處理未觀察到的異常。如果您不訪問屬性而您沒有調(diào)用Task.Result
,則認(rèn)為異常未被觀察到。Task.Exception
Task.Wait
在未觀察到的異常到達(dá)TaskScheduler.UnobservedTaskException
事件處理程序之后,默認(rèn)行為是吞下此異常,以便程序不會(huì)崩潰??梢酝ㄟ^添加以下內(nèi)容在配置文件中更改此行為:
<configuration> <runtime> <ThrowUnobservedTaskExceptions enabled="true"/> </runtime> </configuration>
- 3 回答
- 0 關(guān)注
- 574 瀏覽
添加回答
舉報(bào)