次の方法で共有


CA2219: 例外の処理内で例外を発生させないでください

プロパティ
ルール ID CA2219
Title 例外句に例外を発生させないでください
[カテゴリ] 使用方法
修正が破壊的か非破壊的か 中断なし、中断あり
.NET 10 で既定で有効 一つの提案として
該当する言語 C# と Visual Basic

原因

filter、fault 句、または finally から例外がスローされます。

規則の説明

例外が exception 句で発生すると、デバッグの難易度が大幅に向上します。

finally 句または fault 句で例外が発生すると、アクティブな例外 (ある場合) が新しい例外によって隠されます。 これにより、元のエラーの検出およびデバッグが困難になります。

filter 句で例外が発生すると、ランタイムではその例外をサイレントにキャッチし、フィルターの評価を false にします。 フィルターが false と評価される場合と、フィルターによって例外がスローされる場合とを区別する方法はありません。 これにより、フィルターのロジックでのエラーを検出してデバッグすることが難しくなります。

違反の修正方法

この規則の違反を修正するためには、finally、Filter、または Fault 句から明示的に例外を発生させないようにします。

Example

try
{
    // ...
}
finally
{
    // This code violates the rule.
    throw new Exception();
}

どのようなときに警告を抑制するか

この規則に対する警告は抑制しないでください。 exception 句で発生した例外によって実行コードに利点がもたらされるシナリオはありません。

CA1065:予期しない場所に例外を発生させません

関連項目