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.
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
- Uitzonderingsklasse en eigenschappen
- Hoe te: de Try-Catch-block gebruiken om uitzonderingen te vangen
- Hoe te: Specifieke excepties gebruiken in een catch-blok
- Hoe: Expliciet uitzonderingen werpen
- Procedure: Uitzonderingen voor User-Defined maken
- Uitzonderingshandlers voor User-Filtered gebruiken
- Procedure: Ten slotte blokken gebruiken
- COM-interop-uitzonderingen verwerken
- Aanbevolen procedures voor uitzonderingen
- Wat elke dev moet weten over uitzonderingen in de runtime