Java try ... catch (mit Beispielen)

In diesem Tutorial lernen wir anhand von Beispielen die try catch-Anweisung in Java kennen.

Der try… catchBlock in Java wird zur Behandlung von Ausnahmen verwendet und verhindert die abnormale Beendigung des Programms.

Hier ist die Syntax eines try… catchBlocks in Java.

 try( // code ) catch(exception) ( // code )

Der tryBlock enthält den Code, der möglicherweise eine Ausnahme generiert.

Der catchBlock enthält den Code, der ausgeführt wird, wenn innerhalb des tryBlocks eine Ausnahme auftritt .

Beispiel: Java try… catch block

 class Main ( public static void main(String() args) ( try ( 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

Beachten Sie im obigen Beispiel die Zeile:

 int divideByZero = 5 / 0;

Hier versuchen wir, eine Zahl durch Null zu teilen . In diesem Fall tritt eine Ausnahme auf. Daher haben wir diesen Code in den tryBlock eingeschlossen.

Wenn das Programm auf diesen Code stößt, ArithmeticExceptiontritt auf. Die Ausnahme wird vom catchBlock abgefangen und führt den Code im catchBlock aus.

Der catchBlock wird nur ausgeführt, wenn innerhalb des tryBlocks eine Ausnahme vorliegt .

Hinweis : In Java können wir einen tryBlock ohne catchBlock verwenden. Wir können jedoch keinen catchBlock ohne tryBlock verwenden.

Java versuchen … endlich blockieren

Wir können den tryBlock auch zusammen mit einem finally-Block verwenden.

In diesem Fall wird der finally-Block immer ausgeführt, unabhängig davon, ob im try-Block eine Ausnahme vorliegt oder nicht.

Beispiel: Java try… finally block

 class Main ( public static void main(String() args) ( try ( int divideByZero = 5 / 0; ) finally ( System.out.println("Finally block is always executed"); ) ) )

Ausgabe

 Schließlich wird der Block immer ausgeführt. Ausnahme im Thread "main" java.lang.ArithmeticException: / um Null bei Main.main (Main.java:4)

Im obigen Beispiel haben wir den tryBlock zusammen mit dem finallyBlock verwendet. Wir können sehen, dass der Code im tryBlock eine Ausnahme verursacht.

Der Code innerhalb des finallyBlocks wird jedoch unabhängig von der Ausnahme ausgeführt.

Java versuchen … fangen … endlich blockieren

In Java können wir auch den finally-Block nach dem try… catchBlock verwenden. Beispielsweise,

 import java.io.*; class ListOfNumbers ( // create an integer array private int() list = (5, 6, 8, 9, 2); // method to write data from array to a fila public void writeList() ( PrintWriter out = null; try ( System.out.println("Entering try statement"); // creating a new file OutputFile.txt out = new PrintWriter(new FileWriter("OutputFile.txt")); // writing values from list array to Output.txt for (int i = 0; i <7; i++) ( out.println("Value at: " + i + " = " + list(i)); ) ) catch (Exception e) ( System.out.println("Exception => " + e.getMessage()); ) finally ( // checking if PrintWriter has been opened if (out != null) ( System.out.println("Closing PrintWriter"); // close PrintWriter out.close(); ) else ( System.out.println("PrintWriter not open"); ) ) ) ) class Main ( public static void main(String() args) ( ListOfNumbers list = new ListOfNumbers(); list.writeList(); ) )

Ausgabe

 Eingabe der try-Anweisung Exception => Index 5 außerhalb der Grenzen für Länge 5 Schließen von PrintWriter

Im obigen Beispiel haben wir ein Array mit dem Namen list und eine Datei mit dem Namen output.txt erstellt. Hier versuchen wir, Daten aus dem Array zu lesen und in der Datei zu speichern.

Beachten Sie den Code,

 for (int i = 0; i < 7; i++) ( out.println("Value at: " + i + " = " + list(i)); )

Hier ist die Größe des Arrays 5und das letzte Element des Arrays ist bei list(4). Wir versuchen jedoch, auf Elemente unter a(5) und zuzugreifen a(6).

Daher generiert der Code eine Ausnahme, die vom catch-Block abgefangen wird.

Da der finallyBlock immer ausgeführt wird, haben wir Code eingefügt, um das PrintWriterInnere des finally-Blocks zu schließen.

Es wird empfohlen, finally-Block zu verwenden, um wichtigen Bereinigungscode wie das Schließen einer Datei oder einer Verbindung einzuschließen.

Hinweis : In einigen Fällen wird ein finallyBlock nicht ausgeführt:

  • Anwendung der System.exit()Methode
  • Im finallyBlock tritt eine Ausnahme auf
  • Der Tod eines Fadens

Mehrere Fangblöcke

Für jeden tryBlock können null oder mehr catchBlöcke vorhanden sein. Mit mehreren catchBlöcken können wir jede Ausnahme unterschiedlich behandeln.

Der Argumenttyp jedes catchBlocks gibt den Ausnahmetyp an, der von ihm behandelt werden kann. Beispielsweise,

 class ListOfNumbers ( public int() arr = new int(10); public void writeList() ( try ( arr(10) = 11; ) catch (NumberFormatException e1) ( System.out.println("NumberFormatException => " + e1.getMessage()); ) catch (IndexOutOfBoundsException e2) ( System.out.println("IndexOutOfBoundsException => " + e2.getMessage()); ) ) ) class Main ( public static void main(String() args) ( ListOfNumbers list = new ListOfNumbers(); list.writeList(); ) )

Ausgabe

 IndexOutOfBoundsException => Index 10 außerhalb der Grenzen für Länge 10

In diesem Beispiel haben wir ein ganzzahliges Array mit arrder Namengröße 10 erstellt .

Da der Array-Index bei 0 beginnt , befindet sich das letzte Element des Arrays bei arr(9). Beachten Sie die Aussage,

 arr(10) = 11;

Hier versuchen wir, dem Index 10 einen Wert zuzuweisen . Daher IndexOutOfBoundExceptiontritt auf.

Wenn eine Ausnahme im tryBlock auftritt ,

  • Die Ausnahme wird in den ersten catchBlock geworfen . Der erste catchBlock verarbeitet ein nicht IndexOutOfBoundsExceptionund wird daher an den nächsten catchBlock übergeben.
  • Der zweite catchBlock im obigen Beispiel ist der entsprechende Ausnahmebehandler, da er eine behandelt IndexOutOfBoundsException. Daher wird es ausgeführt.

Mehrere Ausnahmen abfangen

Ab Java SE 7 und höher können wir jetzt mehr als einen Ausnahmetyp mit einem catchBlock abfangen .

Dies reduziert die Codeduplizierung und erhöht die Einfachheit und Effizienz des Codes.

Jeder Ausnahmetyp, der vom catchBlock behandelt werden kann, wird durch einen vertikalen Balken getrennt |.

Die Syntax lautet:

 try ( // code ) catch (ExceptionType1 | Exceptiontype2 ex) ( // catch block )

Um mehr zu erfahren, besuchen Sie Java und fangen Sie mehrere Ausnahmen ab.

Java-Try-with-Resources-Anweisung

Die try-with-resources- Anweisung ist eine try-Anweisung mit einer oder mehreren Ressourcendeklarationen.

Die Syntax lautet:

 try (resource declaration) ( // use of the resource ) catch (ExceptionType e1) ( // catch block )

Die Ressource ist ein Objekt, das am Ende des Programms geschlossen werden soll. Es muss in der try-Anweisung deklariert und initialisiert werden.

Nehmen wir ein Beispiel.

 try (PrintWriter out = new PrintWriter(new FileWriter("OutputFile.txt")) ( // use of the resource )

Die Anweisung " Try-with-Resources" wird auch als automatische Ressourcenverwaltung bezeichnet . Diese Anweisung schließt automatisch alle Ressourcen am Ende der Anweisung.

Weitere Informationen finden Sie in der Java-Anweisung zum Ausprobieren von Ressourcen.

Interessante Beiträge...