Standaard uitzonderingstypen gebruiken
Notitie
Deze inhoud wordt opnieuw afgedrukt door toestemming van Pearson Education, Inc. van Framework Design Guidelines: Conventions, Idioms en Patterns for Reusable .NET Libraries, 2nd Edition. Die editie werd in 2008 gepubliceerd en het boek is sindsdien volledig herzien in de derde editie. Sommige informatie op deze pagina is mogelijk verouderd.
In deze sectie worden de standaarduitzondering beschreven die door het Framework worden geboden en de details van hun gebruik. De lijst is niet volledig. Raadpleeg de .NET Framework-referentiedocumentatie voor het gebruik van andere framework-uitzonderingstypen.
Uitzondering en SystemException
❌ NIET gooien System.Exception of System.SystemException.
❌ NIET vangen System.Exception
of System.SystemException
in framework code, tenzij u van plan bent om opnieuw te werpen.
❌ VERMIJD het vangen System.Exception
of System.SystemException
, behalve in uitzonderingshandlers op het hoogste niveau.
ApplicationException
❌ GOOI NIET of afgeleid van ApplicationException.
InvalidOperationException
✔️ Gooi een InvalidOperationException als het object een ongepaste status heeft.
ArgumentException, ArgumentNullException en ArgumentOutOfRangeException
✔️ DO throw ArgumentException of een van de subtypen als slechte argumenten worden doorgegeven aan een lid. Geef de voorkeur aan het meest afgeleide uitzonderingstype, indien van toepassing.
✔️ DO stel de ParamName
eigenschap in bij het gooien van een van de subklassen van ArgumentException
.
Deze eigenschap vertegenwoordigt de naam van de parameter die ervoor zorgde dat de uitzondering werd gegenereerd. Houd er rekening mee dat de eigenschap kan worden ingesteld met behulp van een van de overbelastingen van de constructor.
✔️ DO gebruiken value
voor de naam van de impliciete waardeparameter van eigenschapssetters.
NullReferenceException, IndexOutOfRangeException en AccessViolationException
❌STA NIET toe dat openbaar aanroepbare API's expliciet of impliciet NullReferenceExceptionAccessViolationException, of IndexOutOfRangeException. Deze uitzonderingen worden gereserveerd en gegenereerd door de uitvoeringsengine en geven in de meeste gevallen een bug aan.
Controleer argumenten om te voorkomen dat deze uitzonderingen worden veroorzaakt. Als u deze uitzonderingen genereert, worden implementatiedetails van uw methode weergegeven die na verloop van tijd kunnen veranderen.
StackOverflowException
❌ GOOI NIET expliciet StackOverflowException. De uitzondering mag alleen expliciet worden gegenereerd door de CLR.
❌ NIET vangen StackOverflowException
.
Het is bijna onmogelijk om beheerde code te schrijven die consistent blijft in aanwezigheid van willekeurige stack-overloop. De onbeheerde onderdelen van de CLR blijven consistent door gebruik te maken van tests om stackoverloop naar goed gedefinieerde plaatsen te verplaatsen in plaats van door een back-out te maken van willekeurige stack-overflows.
OutOfMemoryException
❌ GOOI NIET expliciet OutOfMemoryException. Deze uitzondering wordt alleen veroorzaakt door de CLR-infrastructuur.
ComException, SEHException en ExecutionEngineException
❌ GOOI NIET expliciet COMException, ExecutionEngineExceptionen SEHException. Deze uitzonderingen worden alleen veroorzaakt door de CLR-infrastructuur.
© Delen 2005, 2009 Microsoft Corporation. Alle rechten voorbehouden.
Herdrukt door toestemming van Pearson Education, Inc. van Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition by Krzysztof Cwalina and Brad Abrams, published oct 22, 2008 by Addison-Wesley Professional als onderdeel van de Microsoft Windows Development Series.