Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
| Eigenschap | Waarde |
|---|---|
| Regel-id | CA2201 |
| Titel | Voorkom het opwerpen van gereserveerde uitzonderingstypen |
| Categorie | Gebruik |
| Fix kan brekend of niet-brekend zijn | Onderbreking |
| Standaard ingeschakeld in .NET 10 | Nee |
| Toepasselijke talen | C# en Visual Basic |
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 opgeworpen door de Common Language Runtime.
- System.AccessViolationException
- System.ExecutionEngineException
- System.IndexOutOfRangeException
- System.NullReferenceException
- System.OutOfMemoryException
- System.Runtime.InteropServices.COMException
- System.Runtime.InteropServices.ExternalException
- System.Runtime.InteropServices.SEHException
- System.StackOverflowException
Gooi geen algemene uitzonderingen
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 bij een Stream.Write tijdens een override in een stream die open is 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 gebruiken.
Hoe schendingen op te lossen
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.
Example
// This code violates the rule.
throw new Exception();
throw new NullReferenceException();
throw new IndexOutOfRangeException();
// ...
// This code satisfies the rule.
throw new ArgumentException();
throw new ArgumentNullException();
throw new InvalidOperationException();
// ...
// A minimal implementation of inheritance from Exception
public class CustomException : Exception { }
// Or create your own type that derives from Exception
// This code satisfies the rule too.
throw new CustomException();
Wanneer waarschuwingen onderdrukken
Een waarschuwing van deze regel niet onderdrukken.