簡體   English   中英

為什么 Visual Studio 不會因未處理的外部異常而中斷?

[英]Why doesn't Visual Studio break on unhandled external exceptions?

我正在使用 Visual Studio 2017 (15.4.1) 開發在 .NET Framework 4.6.2 上運行的 ASP.NET Core MVC 2 應用程序。

我試圖讓 Visual Studio 中斷通過我的代碼的所有未處理的異常。 如何讓 Visual Studio 中斷從我的代碼調用的外部庫中引發的未處理異常?

這些是我的設置:

  • 異常設置 -> 拋出時中斷:
    • 所有默認值。 這意味着:
      • 幾乎每個異常都拋出時不要中斷。
      • 對於幾乎所有異常,在用戶代碼中未處理時不要繼續。
  • 選項 -> 調試 -> 常規:
    • 啟用僅我的代碼
    • 使用新的異常幫助程序。

請參閱以下代碼片段:

void ThrowExceptionInUserCode()
{
    // Exception helper doesn't pop up, and shouldn't.
    try { throw new Exception(); }
    catch (Exception) { }

    // Exception helper pops up, and should.
    throw new Exception();
}

void ThrowExceptionInExternalLibrary()
{
    // Exception helper doesn't pop up, and shouldn't.
    try { PopularLibrary.MethodThatFails(); }
    catch (Exception) { }

    // Exception helper doesn't pop up, and should.
    // This is the thing I'm trying to get to work.
    PopularLibrary.MethodThatFails();
}

請注意,我無法禁用“僅我的代碼”,因為 ASP.NET 有一個默認的異常處理程序,它將處理我的所有異常。

編輯:既然我的問題已被標記為重復的,讓我specifiy為什么它一樣的其他問題。 另一個問題更籠統。 “為什么Visual Studio中並不對未處理的異常中斷。 這對我來說非常好。 Visual Studio 確實會因未處理的異常而中斷。 Visual Studio不會中斷從外部庫引發的未處理異常,就像我指定的代碼示例一樣。

其次,原始問題有很多答案,但沒有回答原始問題。 (最初的提問者甚至在回復中提到了這一點。)這些其他答案為許多用戶解決了一個不同的問題,因此獲得了許多贊成票。

問題在於 ASP.NET Core 捕獲所有異常,以便能夠向客戶端顯示錯誤消息,而不是使 HTTP 連接崩潰。

因此,從技術上講,所有異常都被“處理”,因此不會被 Visual Studio 捕獲。

理想情況下,Visual Studio 未處理的異常代碼會在 ASP.NET Core 異常處理程序之前插入自己,但到目前為止還沒有。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM