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 9 | 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:
- System.AccessViolationException
- System.ExecutionEngineException
- System.IndexOutOfRangeException
- System.NullReferenceException
- System.OutOfMemoryException
- System.Runtime.InteropServices.COMException
- System.Runtime.InteropServices.ExternalException
- System.Runtime.InteropServices.SEHException
- System.StackOverflowException
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 referentie |
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.