Die Exception-Handling-Funktion der C#-Sprache hilft Ihnen, unerwartete oder ungewöhnliche Situationen zu bewältigen, die während des Laufens Ihres Programms auftreten. Exception Handling verwendet die Schlüsselwörter try, catch und ending, um bestimmte Operationen zu versuchen und Fehler zu bewältigen, und obwohl diese Operationen das Potenzial haben zu scheitern, kannst du es versuchen, wenn du sicher bist, dass du das tun musst und Ressourcen später bereinigen möchtest. Common Language Runtime (CLR), . NET Framework oder jede Drittanbieter-Bibliothek oder Anwendungscode können Ausnahmen erzeugen. Ausnahmen werden mit dem Wurf-Schlüsselwort erstellt. In vielen Fällen werden Ausnahmen nicht von einer direkt vom Code aufgerufenen Methode ausgelöst, sondern von einer anderen Methode weiter unten im Aufrufstapel. In diesem Fall erweitert die CLR den Stack, um zu prüfen, ob es eine Methode gibt, die einen Catch-Block für diesen speziellen Ausnahmetyp enthält, und wenn sie eine solche Methode findet, führt sie den ersten solchen Catch-Block aus. Wenn kein geeigneter Catch-Block irgendwo im Aufrufstack gefunden wird, wird der Prozess beendet und dem Benutzer wird eine Nachricht angezeigt. In diesem Beispiel wird eine Methode verwendet, um zu erkennen, ob es eine Situation gibt, in der es durch null geteilt wird; Falls ja, wird der Fehler erkannt. Wenn keine Ausnahmebehandlung erfolgt, endet dieses Programm und erzeugt einen Fehler "DivideByZeroException Not Handled".- 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 kopieren
|