Door compiler gegenereerde uitzonderingen onderzoeken
- 10 minuten
Uitzonderingen worden gegenereerd door de .NET-runtime of door code in een programma. Het uitzonderingstype is afhankelijk van de code die de uitzondering veroorzaakt.
Door compiler gegenereerde uitzonderingen
De .NET-runtime genereert uitzonderingen wanneer basisbewerkingen mislukken. Hier volgt een korte lijst met runtime-uitzonderingen en de bijbehorende foutvoorwaarden:
-
ArrayTypeMismatchException: Gegenereerd wanneer een matrix een bepaald element niet kan opslaan omdat het werkelijke type van het element niet compatibel is met het werkelijke type van de matrix. -
DivideByZeroException: Gegooid wanneer een poging wordt gedaan om een integrale waarde door nul te delen. -
FormatException: Opgeworpen wanneer de notatie van een argument ongeldig is. -
IndexOutOfRangeException: Gegenereerd wanneer een poging wordt gedaan om een array te indexeren bij een index die kleiner is dan nul of buiten de grenzen van de array ligt. -
InvalidCastException: Gegenereerd wanneer een expliciete conversie van een basistype naar een interface of naar een afgeleid type mislukt tijdens runtime. -
NullReferenceException: Opgetreden wanneer een poging wordt gedaan om te verwijzen naar een object waarvan de waarde null is. -
OverflowException: Gegenereerd wanneer een rekenkundige bewerking in een gecontroleerde context overloopt.
Codevoorbeelden voor door compiler gegenereerde uitzonderingen
In de volgende codevoorbeelden ziet u een voorbeeld van de code die een door compiler gegenereerde uitzondering veroorzaakt.
ArrayTypeMismatchException
Er wordt een uitzondering van het type ArrayTypeMismatchException gegenereerd wanneer een poging wordt gedaan om een element van het verkeerde type in een matrix op te slaan. In het volgende voorbeeld wordt een ArrayTypeMismatchException uitzondering gegenereerd bij het opslaan van een numerieke waarde in een tekenreeksmatrix.
string[] names = { "Dog", "Cat", "Fish" };
Object[] objs = (Object[])names;
Object obj = (Object)13;
objs[2] = obj; // ArrayTypeMismatchException occurs
DivideByZeroException
Een uitzondering van het type DivideByZeroException treedt op wanneer u een geheel getal of een decimaal getal probeert te delen door nul. In het volgende voorbeeld wordt een DivideByZeroException uitzondering gegooid bij het uitvoeren van een integerdeling.
int number1 = 3000;
int number2 = 0;
Console.WriteLine(number1 / number2); // DivideByZeroException occurs
Opmerking
Het delen van een drijvende-kommawaarde door nul genereert geen uitzondering; het resulteert in positieve oneindigheid, negatieve oneindigheid of geen getal (NaN), volgens de regels van IEEE 754-rekenkundige.
FormatException
Een uitzondering van het type FormatException treedt op wanneer de notatie van een argument ongeldig is of wanneer een tekenreeks met samengestelde notatie niet goed is opgemaakt. In het volgende voorbeeld wordt een FormatException uitzondering gegenereerd bij het converteren van een tekenreeks naar een geheel getal.
int valueEntered;
string userValue = "two";
valueEntered = int.Parse(userValue); // FormatException occurs
IndexOutOfRangeException
Er wordt een uitzondering van het type IndexOutOfRangeException gegenereerd wanneer een poging wordt gedaan om toegang te krijgen tot een element van een matrix of verzameling met een index die buiten de grenzen valt. In het volgende voorbeeld wordt een IndexOutOfRangeException uitzondering gegenereerd bij het toewijzen van het laatste element van de values1 matrix aan het laatste element van de values2 matrix.
int[] values1 = { 3, 6, 9, 12, 15, 18, 21 };
int[] values2 = new int[6];
values2[values1.Length - 1] = values1[values1.Length - 1]; // IndexOutOfRangeException occurs
InvalidCastException
Er wordt een uitzondering van het type InvalidCastException gegenereerd wanneer u een ongeldige cast- of expliciete conversie probeert uit te voeren. In het volgende voorbeeld wordt een InvalidCastException gegenereerd wanneer geprobeerd wordt een object van het type tekenreeks naar een int variabele te casten.
object obj = "This is a string";
int num = (int)obj;
NullReferenceException
Er wordt een uitzondering van het type NullReferenceException gegenereerd wanneer wordt geprobeerd toegang te krijgen tot een lid op een type waarvan de waarde null is. Er worden twee voorbeelden weergegeven. In het eerste voorbeeld wordt er een NullReferenceException gegenereerd wanneer een element van een null-matrix wordt geopend. In het tweede voorbeeld wordt een NullReferenceException opgeworpen wanneer geprobeerd wordt toegang te krijgen tot een methode van een null-tekenreeks.
int[] values = null;
for (int i = 0; i <= 9; i++)
values[i] = i * 2;
string? lowCaseString = null;
Console.WriteLine(lowCaseString.ToUpper());
OverflowException
Een uitzondering van het type OverflowException treedt op wanneer een rekenkundige bewerking probeert een resultaat toe te wijzen dat buiten het bereik van het doelgegevenstype valt. In het volgende voorbeeld wordt een OverflowException uitzondering gegenereerd bij het converteren van een decimal waarde van 400 naar een byte variabele.
decimal x = 400;
byte i;
i = (byte)x; // OverflowException occurs
Console.WriteLine(i);
Samenvatting
Hier volgen enkele belangrijke dingen die u in deze les moet onthouden:
- De .NET-runtime genereert een uitzondering wanneer een bewerking mislukt.
- Het uitzonderingstype is afhankelijk van de code die de uitzondering veroorzaakt.
- Uw toepassing moet runtime-uitzonderingen ondervangen.
Uw kennis controleren
Feedback
Is deze pagina nuttig?
Nee
Need help with this topic?
Want to try using Ask Learn to clarify or guide you through this topic?