CA2219: Nevyvolávejte výjimky v klauzulích výjimky

Vlastnost Hodnota
ID pravidla CA2219
Název Nevyvolávejte výjimky v klauzulích výjimky
Kategorie Využití
Oprava způsobující chybu nebo chybu způsobující chybu Rozbít, rozbít
Povoleno ve výchozím nastavení v .NET 8 Jako návrh

Příčina

Výjimka je vyvolán z finallyklauzule , filtru nebo chyby.

Popis pravidla

Pokud je výjimka vyvolána v klauzuli výjimky, výrazně zvyšuje potíže s laděním.

Pokud je výjimka vyvolána v finally klauzuli nebo v klauzuli selhání, nová výjimka skryje aktivní výjimku, pokud je k dispozici. Původní chyba se tak obtížně rozpozná a ladí.

Při vyvolání výjimky v klauzuli filtru modul runtime bezobslužně zachytí výjimku a způsobí, že se filtr vyhodnotí jako false. Neexistuje způsob, jak zjistit rozdíl mezi vyhodnocením filtru na false a výjimkou, která je vyvolána z filtru. To znesnadňuje detekci a ladění chyb v logice filtru.

Jak opravit porušení

Chcete-li opravit toto porušení tohoto pravidla, nevyvolávejte explicitně výjimku z finallyklauzule , filtru nebo chyby.

Kdy potlačit upozornění

Nepotlačujte upozornění pro toto pravidlo. Neexistují žádné scénáře, ve kterých výjimka vyvolaná v klauzuli výjimky poskytuje výhodu spuštěného kódu.

CA1065: Nevyvolávejte výjimky v neočekávaných umístěních

Viz také