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 9 | Jako návrh |
Příčina
Výjimka je vyvolán z finally
klauzule , 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 finally
klauzule , 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.
Související pravidla
CA1065: Nevyvolávejte výjimky v neočekávaných umístěních