Delen via


CA2201: geen gereserveerde uitzonderingstypen genereren

Eigenschappen Weergegeven als
Regel-id CA2201
Titel Gereserveerde uitzonderingstypen niet genereren
Categorie Gebruik
Oplossing is brekend of niet-brekend Breken
Standaard ingeschakeld in .NET 8 Nee

Oorzaak

Een methode genereert een uitzonderingstype dat te algemeen is of die is gereserveerd door de runtime.

Beschrijving van regel

De volgende uitzonderingstypen zijn te algemeen om voldoende informatie aan de gebruiker te verstrekken:

De volgende uitzonderingstypen zijn gereserveerd en mogen alleen worden gegenereerd door de algemene taalruntime:

Algemene uitzonderingen niet genereren

Als u een algemeen uitzonderingstype genereert, zoals Exception of SystemException, in een bibliotheek of framework, dwingt het consumenten om alle uitzonderingen te ondervangen, inclusief onbekende uitzonderingen die ze niet weten hoe ze moeten omgaan.

In plaats daarvan genereert u een meer afgeleid type dat al bestaat in het framework of maakt u uw eigen type dat is afgeleid van Exception.

Specifieke uitzonderingen genereren

In de volgende tabel ziet u welke uitzondering moet worden gegenereerd voor verschillende typen ongeldige argumenten, inclusief de waardeparameter in de set accessor van een eigenschap.

Ongeldig argument Uitzondering
null Verwijzing ArgumentNullException
Buiten het toegestane bereik van waarden (zoals een index voor een verzameling of lijst) ArgumentOutOfRangeException
Ongeldige enum waarde InvalidEnumArgumentException
Bevat een indeling die niet voldoet aan de parameterspecificaties van een methode (zoals de notatietekenreeks voor ToString(String)) FormatException
Anders ongeldig ArgumentException

In de volgende tabel ziet u welke uitzondering moet worden gegenereerd voor verschillende typen ongeldige bewerkingen.

Ongeldige bewerking Uitzondering
De bewerking is ongeldig voor de huidige status van een object. InvalidOperationException
Bewerking wordt uitgevoerd op een object dat is verwijderd. ObjectDisposedException
Bewerking wordt niet ondersteund (zoals in een overschreven Stream.Write stroom die is geopend voor lezen). NotSupportedException
Conversie zou resulteren in een overloop (zoals bij een expliciete overbelasting van een cast-operator). OverflowException

Voor alle andere situaties kunt u overwegen om uw eigen type te maken dat is afgeleid van Exception en dat te gooien.

Schendingen oplossen

Als u een schending van deze regel wilt oplossen, wijzigt u het type gegenereerde uitzondering in een specifiek type dat niet een van de gereserveerde typen is.

Wanneer waarschuwingen onderdrukken

Een waarschuwing van deze regel niet onderdrukken.