亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

捕獲異步空方法引發的異常。

捕獲異步空方法引發的異常。

拉風的咖菲貓 2019-07-22 19:00:12
捕獲異步空方法引發的異常。使用Microsoft for.NET的異步CTP,是否有可能捕獲調用方法中的異步方法引發的異常?public async void Foo(){     var x = await DoSomethingAsync();     /* Handle the result, but sometimes an exception might be thrown.        For example, DoSomethingAsync gets data from the network        and the data is invalid... a ProtocolException might be thrown. */}public void DoFoo(){     try     {         Foo();     }     catch (ProtocolException ex)     {           /* The exception will never be caught.              Instead when in debug mode, VS2010 will warn and continue.              The deployed the app will simply crash. */     }}因此,基本上,我希望異步代碼中的異常出現在我的調用代碼中,如果這是可能的話。
查看完整描述

3 回答

?
森林海

TA貢獻2011條經驗 獲得超2個贊

未捕獲異常的原因是foo()方法有一個空返回類型,因此當調用WAIT時,它只是返回。由于DoFoo()沒有等待foo的完成,因此不能使用異常處理程序。

這打開了一個更簡單的解決方案,如果您可以更改方法簽名-ALTERFoo()以便它返回類型Task然后DoFoo()能,會,可以await Foo(),如本代碼所示:

public async Task Foo() {
    var x = await DoSomethingThatThrows();}public async void DoFoo() {
    try {
        await Foo();
    } catch (ProtocolException ex) {
        // This will catch exceptions from DoSomethingThatThrows
    }}


查看完整回答
反對 回復 2019-07-22
  • 3 回答
  • 0 關注
  • 374 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號