Behandlung von Java-Ausnahmen (mit Beispielen)

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… catchBlock:

 try ( // code ) catch(Exception e) ( // code )

Hier haben wir den Code platziert, der möglicherweise eine Ausnahme innerhalb des tryBlocks generiert . Auf jeden tryBlock folgt ein catchBlock.

Wenn eine Ausnahme auftritt, wird sie vom catchBlock abgefangen . Der catchBlock kann nicht ohne den tryBlock 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 / 0in den tryBlock eingefügt. Wenn nun eine Ausnahme auftritt, wird der Rest des Codes im tryBlock übersprungen.

Der catchBlock fängt die Ausnahme ab und Anweisungen innerhalb des catch-Blocks werden ausgeführt.

Wenn keine der Anweisungen im tryBlock eine Ausnahme generiert, wird der catchBlock übersprungen.

2. Java blockiert schließlich

In Java wird der finallyBlock immer ausgeführt, unabhängig davon, ob eine Ausnahme vorliegt oder nicht.

Der finallyBlock ist optional. Und für jeden tryBlock kann es nur einen finallyBlock geben.

Die grundlegende Syntax von finallyBlock lautet:

 try ( //code ) catch (ExceptionType1 e1) ( // catch block ) finally ( // finally block always executes )

Wenn eine Ausnahme auftritt, wird der finallyBlock nach dem try… catchBlock ausgeführt. Andernfalls wird es nach dem try-Block ausgeführt. Für jeden tryBlock kann es nur einen finallyBlock 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 catchBlock abgefangen . Und dann wird der finallyBlock ausgeführt.

Hinweis : Es wird empfohlen, den finallyBlock 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- throwSchlüsselwort wird verwendet, um eine einzelne Ausnahme explizit auszulösen.

Wenn wir throweine Ausnahme haben, bewegt sich der Programmfluss von tryBlock zu catchBlock.

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 ArithmeticExceptiondas throwSchlüsselwort using explizit ausgelöst.

In ähnlicher Weise wird das throwsSchlü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 FileInputStreama ausgelöst , FileNotFoundExceptionwodurch die IOExceptionKlasse erweitert wird.

Die findFile()Methode gibt an, dass ein IOExceptionausgelö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 throwsKlausel angegeben werden.

Um mehr zu erfahren, besuchen Sie Java throw and throw.

Interessante Beiträge...