[英]Stop Visual Studio from breaking on exception in Tasks
我有以下代碼:
Task load = Task.Factory.StartNew(() => {//Some Stuff Which Throws an Exception});
try
{
load.Wait();
}
catch (AggregateException ex)
{
MessageBox.Show("Error!");
}
每當 Task 中拋出異常時,我希望它冒泡並被 try catch 捕獲,而不是 Visual Studio 在導致異常時中斷。
我試過谷歌,有人建議我在我的方法之上添加這個[DebuggerHidden]
,但它不起作用。
好的,我知道怎么做。 答案是正確的這里的說明部分
啟用“僅我的代碼”后,Visual Studio 在某些情況下會在引發異常的行中斷並顯示一條錯誤消息,指出“異常未由用戶代碼處理”。 這個錯誤是良性的。 您可以按 F5 繼續並查看這些示例中演示的異常處理行為。 為防止 Visual Studio 因第一個錯誤而中斷,只需取消選中工具、選項、調試、常規下的啟用僅我的代碼復選框。
從 VS 的角度來看,從傳遞給 Task 的委托中拋出的異常與任何其他異常之間確實沒有任何區別。
在一般情況下沒有辦法解決這個問題。
但是,您可以做的一件事是利用這樣一個事實,即當重新拋出異常時,它被包裝在一個AggregateException
。 當拋出AggregateException
而不是其他異常時,您可能會中斷。
您可以轉到 Debug -> Exceptions,取消選擇所有 CLR 異常,然后重新啟用聚合異常:
它現在不會在Task
主體中暫停,但會在您調用Wait
時暫停調試器。
不幸的副作用是,您現在將不再因程序中其他任何地方的任何其他異常而暫停,即使它們不在傳遞給Task
的委托中。
要關閉異常停止,請按“Ctrl + Alt + E”。 這將打開例外窗口。 取消勾選“公共語言運行時異常 - 拋出”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.