In diesem Tutorial lernen wir anhand von Beispielen die try catch-Anweisung in Java kennen.
Der try… catch
Block in Java wird zur Behandlung von Ausnahmen verwendet und verhindert die abnormale Beendigung des Programms.
Hier ist die Syntax eines try… catch
Blocks in Java.
try( // code ) catch(exception) ( // code )
Der try
Block enthält den Code, der möglicherweise eine Ausnahme generiert.
Der catch
Block enthält den Code, der ausgeführt wird, wenn innerhalb des try
Blocks 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 try
Block eingeschlossen.
Wenn das Programm auf diesen Code stößt, ArithmeticException
tritt auf. Die Ausnahme wird vom catch
Block abgefangen und führt den Code im catch
Block aus.
Der catch
Block wird nur ausgeführt, wenn innerhalb des try
Blocks eine Ausnahme vorliegt .
Hinweis : In Java können wir einen try
Block ohne catch
Block verwenden. Wir können jedoch keinen catch
Block ohne try
Block verwenden.
Java versuchen … endlich blockieren
Wir können den try
Block 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 try
Block zusammen mit dem finally
Block verwendet. Wir können sehen, dass der Code im try
Block eine Ausnahme verursacht.
Der Code innerhalb des finally
Blocks 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… catch
Block 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 5
und 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 finally
Block immer ausgeführt wird, haben wir Code eingefügt, um das PrintWriter
Innere 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 finally
Block nicht ausgeführt:
- Anwendung der
System.exit()
Methode - Im
finally
Block tritt eine Ausnahme auf - Der Tod eines Fadens
Mehrere Fangblöcke
Für jeden try
Block können null oder mehr catch
Blöcke vorhanden sein. Mit mehreren catch
Blöcken können wir jede Ausnahme unterschiedlich behandeln.
Der Argumenttyp jedes catch
Blocks 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 arr
der 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 IndexOutOfBoundException
tritt auf.
Wenn eine Ausnahme im try
Block auftritt ,
- Die Ausnahme wird in den ersten
catch
Block geworfen . Der erstecatch
Block verarbeitet ein nichtIndexOutOfBoundsException
und wird daher an den nächstencatch
Block übergeben. - Der zweite
catch
Block im obigen Beispiel ist der entsprechende Ausnahmebehandler, da er eine behandeltIndexOutOfBoundsException
. 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 catch
Block abfangen .
Dies reduziert die Codeduplizierung und erhöht die Einfachheit und Effizienz des Codes.
Jeder Ausnahmetyp, der vom catch
Block 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.