Delen via


Uitzonderingen verwerken en genereren in .NET

Toepassingen moeten fouten kunnen afhandelen 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 uitgevoerd programma. Er kunnen uitzonderingen optreden vanwege een fout in uw code of in code die u aanroept (zoals een gedeelde bibliotheek), niet-beschikbare besturingssysteembronnen, onverwachte voorwaarden die de runtime ondervindt (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 een probleem is opgetreden. De uitzondering wordt doorgegeven aan de stack totdat de toepassing deze verwerkt of het programma wordt beëindigd.

Uitzonderingen versus traditionele methoden voor foutafhandeling

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

  • Het genereren en afhandelen van uitzonderingen werkt hetzelfde in .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 opgeworpen over proces- en zelfs machinegrenzen heen.

  • Code voor het afhandelen 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 doorgaan als gevolg van code die faalt om te controleren op een foutretourcode.

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 Alleen gegenereerd door de runtime wanneer een matrix onjuist wordt geïndexeerd. Een matrix indexeren buiten het geldige bereik:
arr[arr.Length+1]
NullReferenceException Alleen gegenereerd door de runtime wanneer naar een null-object wordt verwezen. object o = null;
o.ToString();
InvalidOperationException Geworpen door methoden in een ongeldige toestand. 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 Veroorzaakt door methoden die niet toestaan dat een argument de waarde null heeft. String s = null;
"Calculate".IndexOf(s);
ArgumentOutOfRangeException Opgeworpen door methoden die verifiëren of argumenten zich in een gegeven bereik bevinden. String s = "string";
s.Substring(s.Length+1);

Zie ook