Kursinhalt
Java JUnit Bibliothek. Arten von Tests
Java JUnit Bibliothek. Arten von Tests
Try-Catch-Struktur
Wie man Ausnahmen behandelt
Aus dem vorherigen Kapitel haben Sie möglicherweise verstanden, dass Ausnahmen die Ausführung des Programms vollständig stoppen. Ein solches Ergebnis ist für uns nicht wünschenswert, da wir möchten, dass das Programm weiterläuft, ohne abzustürzen.
Einfach Ausnahmen zu entfernen ist keine Option, da in diesem Fall das Programm falsch funktionieren würde. Daher müssen wir lernen, wie man Fehler mit der try-catch
-Struktur behandelt.
Werfen wir einen Blick auf die Syntax einer solchen Struktur und verstehen, wie sie Fehler erfasst:
-
try
Block: Dieser Block enthält den Code, der möglicherweise eine Ausnahme erzeugt. Während der Ausführung, wenn eine Anweisung innerhalb destry
-Blocks eine Ausnahme auslöst, wird der Rest des Codes im Block übersprungen, und die Kontrolle wechselt zum entsprechendencatch
Block(s), um diese Ausnahme zu behandeln; -
catch
Block: Dieser Block wird verwendet, um die Ausnahme zu behandeln. Er muss demtry
-Block folgen. Wenn der Typ der ausgelösten Ausnahme dem imcatch
-Block deklarierten Typ entspricht, wird der Code innerhalb dieses Blocks ausgeführt. Es kann mehrere Catch-Blöcke geben, die mit einem einzigentry
-Block verbunden sind, wobei jeder verschiedene Arten von Ausnahmen auffängt und behandelt.
Einfacher ausgedrückt, wir versuchen, den Code auszuführen, und bereiten uns darauf vor, eine Ausnahme aufzufangen.
Wenn wir eine Ausnahme auffangen, stoppt die Codeausführung nicht, sondern wird mit der im catch
-Block angegebenen Operation fortgesetzt. Wenn keine Ausnahme auftritt, wird die Operation erfolgreich ausgeführt, ohne den catch
-Block zu betreten.
Umgang mit ArithmeticException
Im vorherigen Kapitel haben wir eine Divisionsmethode implementiert, die eine arithmetische Ausnahme auslöst, falls eine Division durch Null erfolgt. So sieht diese Methode aus:
Nun, lassen Sie uns diese Ausnahme behandeln, indem wir die Methode mit einer try-catch-Struktur aufrufen:
main
package com.example; public class Main { public static double divide(int numerator, int denominator) throws ArithmeticException { if (denominator == 0) { throw new ArithmeticException("Division by zero is not allowed."); } return (double) numerator / denominator; } public static void main(String[] args) { try { double result = divide(10, 0); System.out.println(result); } catch (ArithmeticException e) { System.out.println("You can't divide by zero!"); } System.out.println("The program is continues its execution"); } }
Wie Sie sehen, versuchen wir, eine Division durch Null durchzuführen, aber wir tun dies innerhalb des try
-Blocks. Im catch
-Block fangen wir die ArithmeticException
und geben ihr den Alias "e
", damit wir dieses Objekt in Zukunft verwenden können (denken Sie daran, Ausnahmen sind Objekte, richtig?).
Auf diese Weise stoppt die Ausnahme nicht die Ausführung des Programms, da wir sie behandelt haben. Jetzt, im Falle einer ausgelösten Ausnahme, benachrichtigt das Programm den Benutzer mit Konsolenausgabe und setzt seine Ausführung fort.
1. Was ist der Zweck des try
-Blocks in einer try-catch-Struktur?
2. Was passiert, wenn eine Ausnahme innerhalb eines try
-Blocks ausgelöst wird?
3. Was macht der catch
-Block in einer try-catch-Struktur?
4. Was ist das Ergebnis der Behandlung einer Ausnahme mit einer try-catch
-Struktur?
Danke für Ihr Feedback!