Share via


Uitzonderingen verwerken en genereren in .NET

Toepassingen moeten fouten kunnen verwerken die optreden tijdens de uitvoering op een consistente manier. .NET biedt een model voor het melden van toepassingen op een uniforme manier: .NET-bewerkingen geven fouten aan door uitzonderingen te genereren.

Uitzonderingen

Een uitzondering is een foutvoorwaarde of onverwacht gedrag dat wordt aangetroffen door een uitvoerend programma. Uitzonderingen kunnen worden gegenereerd vanwege een fout in uw code of in code die u aanroept (zoals een gedeelde bibliotheek), niet-beschikbare besturingssysteembronnen, onverwachte voorwaarden die de runtime tegenkomt (zoals code die niet kan worden geverifieerd), enzovoort. Uw toepassing kan herstellen van sommige van deze voorwaarden, maar niet van anderen. Hoewel u de meeste toepassingsuitzondering kunt herstellen, kunt u niet herstellen van de meeste runtime-uitzonderingen.

In .NET is een uitzondering een object dat wordt overgenomen van de System.Exception klasse. Er wordt een uitzondering gegenereerd vanuit een codegebied waar zich een probleem heeft voorgedaan. De uitzondering wordt doorgegeven aan de stack totdat de toepassing deze verwerkt of het programma wordt beëindigd.

Uitzonderingen versus traditionele methoden voor foutafhandeling

Traditioneel is het foutafhandelingsmodel van een taal afhankelijk van de unieke manier om fouten te detecteren en handlers voor hen te vinden, of op het mechanisme voor foutafhandeling dat wordt geleverd door het besturingssysteem. De manier waarop .NET uitzonderingsafhandeling implementeert, biedt de volgende voordelen:

  • Uitzonderingen die worden gegenereerd en verwerkt, werken hetzelfde voor .NET-programmeertalen.

  • Vereist geen specifieke taalsyntaxis voor het verwerken van uitzonderingen, maar staat elke taal toe om een eigen syntaxis te definiëren.

  • Uitzonderingen kunnen worden gegenereerd over proces- en zelfs machinegrenzen.

  • Code voor het verwerken van uitzonderingen kan worden toegevoegd aan een toepassing om de betrouwbaarheid van het programma te vergroten.

Uitzonderingen bieden voordelen ten opzichte van andere methoden voor foutmeldingen, zoals retourcodes. Fouten worden niet onopgemerkt omdat als er een uitzondering wordt gegenereerd en u deze niet verwerkt, de runtime uw toepassing beëindigt. Ongeldige waarden blijven niet door het systeem doorgegeven als gevolg van code die niet kan controleren op een fout retourcode.

Algemene uitzonderingen

De volgende tabel bevat enkele veelvoorkomende uitzonderingen met voorbeelden van wat ze kunnen veroorzaken.

Uitzonderingstype Beschrijving Voorbeeld
Exception Basisklasse voor alle uitzonderingen. Geen (gebruik een afgeleide klasse van deze uitzondering).
IndexOutOfRangeException Gegenereerd door de runtime alleen wanneer een matrix onjuist wordt geïndexeerd. Een matrix indexeren buiten het geldige bereik:
arr[arr.Length+1]
NullReferenceException Gegenereerd door de runtime alleen wanneer naar een null-object wordt verwezen. object o = null;
o.ToString();
InvalidOperationException Gegenereerd door methoden wanneer deze een ongeldige status hebben. Aanroepen Enumerator.MoveNext() na het verwijderen van een item uit de onderliggende verzameling.
ArgumentException Basisklasse voor alle argument-uitzonderingen. Geen (gebruik een afgeleide klasse van deze uitzondering).
ArgumentNullException Gegenereerd door methoden die niet toestaan dat een argument null is. String s = null;
"Calculate".IndexOf(s);
ArgumentOutOfRangeException Gegenereerd door methoden die controleren of argumenten zich in een bepaald bereik bevinden. String s = "string";
s.Substring(s.Length+1);

Zie ook