2012-06-20 43 views
38

我在調試器中收到這樣的問題,程序停止執行。調試器不會向我顯示該行,所以我不知道要修復什麼。如何修復mscorlib.dll中發生「'System.AggregateException'」

的類型「System.AggregateException」未處理的異常發生在 mscorlib.dll中

其他信息:任務的異常(或多個)通過等待對任務或訪問其Exception屬性,沒有觀察到任何 。作爲 的結果,未被觀察到的異常被終結器線程重新拋出。

無法獲取本地或參數「'的值,因爲它不是 在此指令指針處可用,可能是因爲它已將 優化掉了。 System.Threading.Tasks.TaskExceptionHolder

如何解決我的問題?

我也發現了這個問題,這是非常相似Cannot obtain value of local or argument as it is not available at this instruction pointer, possibly because it has been optimized away

+0

當調試運行期間以前沒有問題的控制檯應用程序中斷時,我以某種方式導致了此問題。關閉Visual Studio然後重新打開它解決了問題,然後運行正常 - 這在所有情況下都無濟於事,但如果應用程序「應該」正常工作,值得一試。 –

回答

42

由於有消息稱,你有拋出未處理的異常的任務。

打開所有異常(調試,例外)中斷並重新運行該程序。
這會向您顯示最初拋出的異常。


(評論追加):在VS2015(或以上)。選擇調試>選項>調試>常規,然後取消選中「啓用我的代碼」選項。

+2

此設置在哪裏?調試>例外> ...? – mdupls

+3

@mdupls:打破所有CLR例外。 – SLaks

+1

只是檢查他們所有。然後使用「全部重置」返回到默認值。 –

9

你可以直接處理這個異常,這樣它就不會崩潰你的程序(捕獲AggregateException)。您還可以看看內部異常,這會給你的什麼地方出了錯更詳細的解釋:

try { 
    // your code 
} catch (AggregateException e) { 

} 
+2

但是,如何徹底解決這個問題? – 2015-02-05 18:19:05

+0

一般而言,如果出現問題,您可能希望應用程序崩潰。解決問題來源而不是捕獲所有異常。 –

4

接受的答案會工作,如果你可以很容易地重現該問題。但是,作爲最佳實踐,您應該捕獲任務中執行的任何異常(和日誌記錄)。否則,如果任務中發生任何意外事件,您的應用程序將會崩潰。

Task.Factory.StartNew(x=> 
    throw new Exception("I didn't account for this"); 
) 

但是,如果我們這樣做,至少應用程序不會崩潰。

Task.Factory.StartNew(x=> 
    try { 
     throw new Exception("I didn't account for this"); 
    } 
    catch(Exception ex) { 
     //Log ex 
    } 
) 
0

在我來說,我跑在這個問題上,同時使用Edge.js - 所有的問題是一個C#Edge.js函數定義內部一個JavaScript語法錯誤。

相關問題