警告 CA2200:重新擲回以保存堆疊詳細資料

從 .NET 5 開始,系統會預設啟用 .NET 程式碼分析器規則 CA2200。 這項規則會針對任何重新擲回例外狀況的 catch 區塊產生組建警告,且該例外狀況在 throw 陳述式中明確指定。

變更描述

從 .NET 5 開始,.NET SDK 包含 .NET 原始程式碼分析器。 這些規則中有些會預設啟用,包括 CA2200。 如果您的專案包含違反此規則的程式碼,且設定為將警告視為錯誤,則此項變更會中斷您的組建。

規則 CA2200 會標示重新擲回例外狀況的程式碼,且該例外狀況變數在 throw 陳述式中受到指定。 擲回例外狀況時,其中部分資訊為堆疊追蹤。 堆疊追蹤是方法呼叫階層的清單,從擲回例外狀況的方法開始,並以攔截例外狀況的方法作結。 如果例外狀況是透過在 throw 陳述式中指定而重新擲回,則堆疊追蹤會在目前的方法上重新啟動,且會遺失在擲回例外狀況之原始方法和目前方法之間呼叫的方法清單。 若要保留有例外狀況的原始堆疊追蹤資訊,請用 throw 陳述式而不要指定例外狀況。

下列程式碼片段不會根據規則 CA2200 產生警告。 不過,其註解行觸發違規。

catch (ArithmeticException e)
{
    // throw e;
    throw;
}

導入的版本

5.0

  • 重新擲回例外狀況,但不要明確指定之。 如需詳細資訊,請參閱 CA2200

  • 若要完全停用程式碼分析,請在專案檔中將 EnableNETAnalyzers 設定為 false。 如需詳細資訊,請參閱 EnableNETAnalyzers

受影響的 API

無法透過 API 分析偵測。