Im Tutorial lernen wir anhand von Beispielen verschiedene Ansätze der Ausnahmebehandlung in Java kennen.
Im letzten Tutorial haben wir etwas über Java-Ausnahmen gelernt. Wir wissen, dass Ausnahmen die Ausführung eines Programms abnormal beenden.
Aus diesem Grund ist es wichtig, Ausnahmen zu behandeln. Hier ist eine Liste verschiedener Ansätze zur Behandlung von Ausnahmen in Java.
- versuchen Sie … Block zu fangen
- endlich blockieren
- werfen und wirft Schlüsselwort
1. Java try… catch block
Der Try-Catch-Block wird verwendet, um Ausnahmen in Java zu behandeln. Hier ist die Syntax von try… catch
Block:
try ( // code ) catch(Exception e) ( // code )
Hier haben wir den Code platziert, der möglicherweise eine Ausnahme innerhalb des try
Blocks generiert . Auf jeden try
Block folgt ein catch
Block.
Wenn eine Ausnahme auftritt, wird sie vom catch
Block abgefangen . Der catch
Block kann nicht ohne den try
Block verwendet werden.
Beispiel: Ausnahmebehandlung mit try… catch
class Main ( public static void main(String() args) ( try ( // code that generate exception int divideByZero = 5 / 0; System.out.println("Rest of code in try block"); ) catch (ArithmeticException e) ( System.out.println("ArithmeticException => " + e.getMessage()); ) ) )
Ausgabe
ArithmeticException => / um Null
Im Beispiel versuchen wir, eine Zahl durch zu teilen 0
. Hier generiert dieser Code eine Ausnahme.
Um die Ausnahme zu behandeln, haben wir den Code 5 / 0
in den try
Block eingefügt. Wenn nun eine Ausnahme auftritt, wird der Rest des Codes im try
Block übersprungen.
Der catch
Block fängt die Ausnahme ab und Anweisungen innerhalb des catch-Blocks werden ausgeführt.
Wenn keine der Anweisungen im try
Block eine Ausnahme generiert, wird der catch
Block übersprungen.
2. Java blockiert schließlich
In Java wird der finally
Block immer ausgeführt, unabhängig davon, ob eine Ausnahme vorliegt oder nicht.
Der finally
Block ist optional. Und für jeden try
Block kann es nur einen finally
Block geben.
Die grundlegende Syntax von finally
Block lautet:
try ( //code ) catch (ExceptionType1 e1) ( // catch block ) finally ( // finally block always executes )
Wenn eine Ausnahme auftritt, wird der finally
Block nach dem try… catch
Block ausgeführt. Andernfalls wird es nach dem try-Block ausgeführt. Für jeden try
Block kann es nur einen finally
Block geben.
Beispiel: Java-Ausnahmebehandlung mit finally-Block
class Main ( public static void main(String() args) ( try ( // code that generates exception int divideByZero = 5 / 0; ) catch (ArithmeticException e) ( System.out.println("ArithmeticException => " + e.getMessage()); ) finally ( System.out.println("This is the finally block"); ) ) )
Ausgabe
ArithmeticException => / by zero Dies ist der finally-Block
Im obigen Beispiel teilen wir eine Zahl innerhalb des Blocks durch 0try
. Hier generiert dieser Code eine ArithmeticException
.
Die Ausnahme wird vom catch
Block abgefangen . Und dann wird der finally
Block ausgeführt.
Hinweis : Es wird empfohlen, den finally
Block zu verwenden. Dies liegt daran, dass wichtige Bereinigungscodes wie z.
- Code, der möglicherweise versehentlich bei der Rückgabe übersprungen, fortgesetzt oder unterbrochen wird
- Schließen einer Datei oder Verbindung
3. Java wirft und wirft Schlüsselwort
Das Java- throw
Schlüsselwort wird verwendet, um eine einzelne Ausnahme explizit auszulösen.
Wenn wir throw
eine Ausnahme haben, bewegt sich der Programmfluss von try
Block zu catch
Block.
Beispiel: Ausnahmebehandlung mit Java-Wurf
class Main ( public static void divideByZero() ( // throw an exception throw new ArithmeticException("Trying to divide by 0"); ) public static void main(String() args) ( divideByZero(); ) )
Ausgabe
Ausnahme im Thread "main" java.lang.ArithmeticException: Versuch, bei Main.divideByZero (Main.java:5) bei Main.main (Main.java:9) durch 0 zu teilen
Im obigen Beispiel wird ArithmeticException
das throw
Schlüsselwort using explizit ausgelöst.
In ähnlicher Weise wird das throws
Schlüsselwort verwendet, um den Typ der Ausnahmen zu deklarieren, die innerhalb der Methode auftreten können. Es wird in der Methodendeklaration verwendet.
Beispiel: Java löst ein Schlüsselwort aus
import java.io.*; class Main ( // declareing the type of exception public static void findFile() throws IOException ( // code that may generate IOException File newFile = new File("test.txt"); FileInputStream stream = new FileInputStream(newFile); ) public static void main(String() args) ( try ( findFile(); ) catch (IOException e) ( System.out.println(e); ) ) )
Ausgabe
java.io.FileNotFoundException: test.txt (Das System kann die angegebene Datei nicht finden.)
Wenn wir dieses Programm ausführen und die Datei test.txt nicht existiert, wird FileInputStream
a ausgelöst , FileNotFoundException
wodurch die IOException
Klasse erweitert wird.
Die findFile()
Methode gibt an, dass ein IOException
ausgelöst werden kann. Die main()
Methode ruft diese Methode auf und behandelt die Ausnahme, wenn sie ausgelöst wird.
Wenn eine Methode keine Ausnahmen behandelt, muss die Art der Ausnahmen, die darin auftreten können, in der throws
Klausel angegeben werden.
Um mehr zu erfahren, besuchen Sie Java throw and throw.