CA2219: Geen uitzonderingen genereren in uitzonderingsclausules

Eigenschap Waarde
Regel-id CA2219
Titel In uitzonderingsclausules geen uitzonderingen genereren
Categorie Gebruik
Fix kan brekend of niet-brekend zijn Niet-afbreekbaar, afbreekbaar
Standaard ingeschakeld in .NET 10 Als suggestie
Toepasselijke talen C# en Visual Basic

Oorzaak

Er wordt een uitzondering gegenereerd op basis van een finallycomponent, filter of fout.

Beschrijving van regel

Wanneer een uitzondering wordt gegenereerd in een uitzonderingsclausule, wordt de moeilijkheid van foutopsporing aanzienlijk verhoogd.

Wanneer een uitzondering wordt gegenereerd in een finally of foutcomponent, verbergt de nieuwe uitzondering de actieve uitzondering, indien aanwezig. Hierdoor is de oorspronkelijke fout moeilijk te detecteren en fouten op te sporen.

Wanneer een uitzondering wordt gegenereerd in een filtercomponent, wordt de uitzondering door de runtime op de achtergrond onderschept en wordt het filter als onwaar geëvalueerd. Er is geen manier om het verschil te zien tussen het filter dat als onwaar wordt geëvalueerd en een uitzondering die door een filter wordt geworpen. Dit maakt het lastig om fouten in de logica van het filter te detecteren en op te sporen.

Hoe schendingen op te lossen

Als u deze schending van deze regel wilt oplossen, moet u geen uitzondering expliciet opwerpen vanuit een finally, filter of foutclausule.

Example

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

Wanneer waarschuwingen onderdrukken

Geen waarschuwing voor deze regel onderdrukken. Er zijn geen scenario's waarin een uitzondering die wordt gegenereerd in een uitzonderingsclausule een voordeel biedt voor de uitvoering van code.

CA1065: Geen uitzonderingen genereren op onverwachte locaties

Zie ook