Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> Java

Java Exception Handling meistern: Try, Catch, Finally, Throw & Throws erklärt

Java Exception Handling meistern

Dieser Leitfaden führt Sie durch Javas Exception-Handling-Mechanismen – try-catch, finally, throw und throws – mit klaren Beispielen und Best-Practice-Tipps.

In der vorherigen Lektion haben wir Java Exceptions eingeführt und warum sie den Programmfluss unterbrechen. Diese Exceptions gracefully zu handhaben, ist essenziell für robusten, wartbaren Code.

Hier sind die primären Strategien zum Verwalten von Exceptions in Java:


1. try…catch Block verwenden

Das try…catch-Konstrukt ist der Eckpfeiler von Javas Error-Handling-Modell. Platzieren Sie Code, der eine Exception werfen könnte, in den try-Block, und fangen Sie spezifische Exceptions danach ab.

try { // Code, der werfen könnte } catch(Exception e) { // Exception behandeln }
catch-Klausel ist zwingend, wann immer ein try-Block erscheint; sie fängt die Exception ab und erlaubt Ihnen, angemessen zu reagieren.

Beispiel: ArithmeticException behandeln

class Haupt { public static void main(String[] args) { try { int divisionDurchNull = 5 / 0; System.out.println("Restlicher Code im try Block"); } catch (ArithmeticException e) { System.out.println("ArithmeticException => " + e.getMessage()); } } }

Ausgabe:

ArithmeticException => / by zero

In diesem Snippet löst die Division durch Null eine ArithmeticException aus. Die Exception wird gefangen, der catch-Block ausgeführt, und jeder Code nach der Exception im try-Block wird übersprungen.

Wenn der try-Block ohne Werfen abschließt, wird der catch-Block einfach umgangen.


2. finally Block nutzen

Ein finally-Block läuft immer, unabhängig davon, ob eine Exception geworfen wurde. Er ist der ideale Ort für Cleanup-Aufgaben – Dateien schließen, Ressourcen freigeben oder Logging.

Nur ein finally-Block kann einen gegebenen try-Statement begleiten.

try { // Code } catch (ExceptionType1 e1) { // behandeln } finally { // immer ausgeführt }

Beispiel: finally nach Exception

class Haupt { public static void main(String[] args) { try { int divisionDurchNull = 5 / 0; } catch (ArithmeticException e) { System.out.println("ArithmeticException => " + e.getMessage()); } finally { System.out.println("Dies ist der finally Block"); } } }

Ausgabe:

ArithmeticException => / by zero Dies ist der finally Block
finally-Block wird nach dem catch-Block ausgeführt und stellt sicher, dass kritischer Cleanup-Code auch bei Exception-Auslösung läuft.

Best Practice: Nutzen Sie finally für jeden Code, der unabhängig von Erfolg oder Misserfolg laufen muss, wie Streams schließen oder Shared State zurücksetzen.


3. Explizit Exceptions werfen und throws deklarieren

Das throw-Schlüsselwort erlaubt Ihnen, eine Exception manuell zu werfen. Wenn geworfen, springt die Kontrolle direkt zum nächstpassenden catch-Block.

Beispiel: throw verwenden

class Haupt { public static void durchNullTeilen() { throw new ArithmeticException("Versuche durch 0 zu teilen"); } public static void main(String[] args) { durchNullTeilen(); } }

Ausgabe:

Exception in thread "main" java.lang.ArithmeticException: Versuche durch 0 zu teilen at Haupt.durchNullTeilen(Haupt.java:5) at Haupt.main(Haupt.java:9)

Das throws-Klausel hingegen deklariert, dass eine Methode bestimmte checked Exceptions weiterleiten könnte. Sie signalisiert Aufrufern, dass sie die Exception behandeln oder weiterleiten müssen.

Beispiel: throws mit Datei-I/O verwenden

import java.io.*; class Haupt { // Deklarieren, dass diese Methode IOException werfen kann public static void dateiFinden() throws IOException { File neueDatei = new File("test.txt"); FileInputStream stream = new FileInputStream(neueDatei); } public static void main(String[] args) { try { dateiFinden(); } catch (IOException e) { System.out.println(e); } } }

Ausgabe:

java.io.FileNotFoundException: test.txt (Das System kann die angegebene Datei nicht finden)

Falls die Datei nicht existiert, wirft FileInputStream eine FileNotFoundException, eine Unterklasse von IOException. Da dateiFinden() throws IOException deklariert, muss die main-Methode sie behandeln.

Wenn eine Methode eine Exception nicht intern fängt, müssen Sie sie mit throws deklarieren, um Aufrufer über das potenzielle Scheitern zu informieren.

Für tiefere Einblicke erkunden Sie Javas throw und throws Dokumentation.

Java

  1. Java Operatoren meistern: Typen, Syntax und praktische Beispiele
  2. Java Kommentare: Typen, Verwendung und Best Practices
  3. Java Enhanced For-Schleife meistern: Syntax, Beispiele und Best Practices
  4. Java Strings meistern: Erstellung, Methoden und Best Practices
  5. Java-Schnittstellen meistern: Konzepte, Implementierung und Best Practices
  6. Java anonyme innere Klassen meistern: Definition, Syntax und praktische Beispiele
  7. Java Exception Handling meistern: Try, Catch, Finally und Ressourcen
  8. Java Try-With-Resources meistern: Automatisches Ressourcenmanagement erklärt
  9. Java Annotations erklärt: Typen, Platzierung und praktische Beispiele
  10. Java Assertions: Praktischer Leitfaden zur Fehlererkennung und Code-Reliabilität