De exception handling-functie van de C#-taal helpt je om onverwachte of ongebruikelijke situaties te verwerken die zich voordoen terwijl je programma draait. Exception handling gebruikt de trefwoorden try, catch en finally om bepaalde bewerkingen te proberen om fouten te verwerken, en hoewel deze bewerkingen kunnen falen, kun je het proberen als je zeker weet dat je dit moet doen en daarna resources wilt opruimen. Common Language Runtime (CLR), . NET Framework of een andere bibliotheek of applicatiecode van derden kan uitzonderingen genereren. Uitzonderingen worden gemaakt met het sleutelwoord throw. In veel gevallen kunnen uitzonderingen niet worden opgeroepen door een methode die direct door code wordt aangeroepen, maar door een andere methode verderop in de aanroepstapel. In dit geval breidd de CLR de stack uit om te zien of er een methode is die een catchblok bevat voor dat specifieke uitzonderingstype, en als het zo'n methode vindt, voert het het eerste gevonden catchblok uit. Als er nergens in de call stack een passend catchblok wordt gevonden, wordt het proces beëindigd en wordt er een bericht aan de gebruiker getoond. In dit voorbeeld wordt een methode gebruikt om te detecteren of er een situatie is waarin deze door nul wordt gedeeld; Als dat zo is, wordt de fout gemerkt. Als er geen uitzonderingsbehandeling is, zal dit programma eindigen en een foutmelding "DivideByZeroException Not Handled" veroorzaken.- class ExceptionTest
- {
- static double SafeDivision(double x, double y)
- {
- if (y == 0)
- throw new System.DivideByZeroException();
- return x / y;
- }
- static void Main()
- {
- // Input for test purposes. Change the values to see
- // exception handling behavior.
- double a = 98, b = 0;
- double result = 0;
- try
- {
- result = SafeDivision(a, b);
- Console.WriteLine("{0} divided by {1} = {2}", a, b, result);
- }
- catch (DivideByZeroException e)
- {
- Console.WriteLine("Attempted divide by zero.");
- }
- }
- }
Code kopiëren
|