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

Java throw vs. throws: Exception Handling mit praktischen Beispielen meistern

Java throw vs. throws: Exception Handling mit praktischen Beispielen meistern

Dieser Leitfaden erklärt, wie Sie Javas throw und throws Schlüsselwörter für effektives Exception Handling nutzen – illustriert mit realitätsnahen Code-Beispielen.

In Java fallen Exceptions in zwei Kategorien:

Für einen tieferen Einstieg siehe Java Exceptions.

Unchecked Exceptions signalisieren meist Programmierfehler; sie sollten korrigiert statt gefangen werden. Checked Exceptions hingegen repräsentieren Bedingungen, die Aufrufer kennen und behandeln müssen.


Das throws-Schlüsselwort verwenden

Die throws-Klausel deklariert, dass eine Methode eine oder mehrere Exceptions werfen kann, und delegiert die Verantwortung an Aufrufer. Ihre Syntax ist:

accessModifier returnType methodenName() throws ExceptionType1, ExceptionType2 { /* Code */ }

Sie können mehrere Exception-Typen, durch Kommas getrennt, auflisten.


Beispiel 1: Checked Exception deklarieren

import java.io.*; class Haupt { public static void dateiFinden() throws IOException { // Code, der IOException auslösen kann 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 (No such file or directory)

Falls test.txt fehlt, wirft FileInputStream eine FileNotFoundException, eine Unterklasse von IOException. Da dateiFinden() throws IOException deklariert, muss die main()-Methode die Exception behandeln oder weiterleiten.


Mehrere Exceptions werfen

Sie können mehrere Exception-Typen in einer einzelnen throws-Klausel deklarieren:

import java.io.*; class Haupt { public static void dateiFinden() throws NullPointerException, IOException, InvalidClassException { // Potenziell wirft NullPointerException … // Potenziell wirft IOException … // Potenziell wirft InvalidClassException … } public static void main(String[] args) { try { dateiFinden(); } catch (IOException e1) { System.out.println(e1.getMessage()); } catch (InvalidClassException e2) { System.out.println(e2.getMessage()); } } }

Beachten Sie, dass NullPointerException unchecked ist, daher muss sie vom Aufru nicht gefangen oder deklariert werden.


Wann throws vs. try...catch verwenden

Das Einbetten von try...catch in jede Methode, die eine Exception werfen könnte, kann Code verunreinigen und Logik verschleiern. throws zu deklarieren hält die Methodensignatur sauber und erlaubt höherem Code, zu entscheiden, wie Fehler behandelt werden.


Das throw-Schlüsselwort verwenden

Das throw-Statement wirft explizit eine Exception-Instanz und überträgt Kontrolle zum nächstpassenden catch-Block oder beendet das Programm, wenn unbehandelt.

Syntax:

throw werfbaresObjekt;

Hier ist werfbaresObjekt eine Instanz von Throwable oder einer seiner Unterklassen.


Beispiel 2: Unchecked Exception werfen

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:3) at Haupt.main(Haupt.java:7) exit status 1

Da ArithmeticException unchecked ist, ist das Fangen optional.


Beispiel 3: Checked Exception werfen

import java.io.*; class Haupt { public static void dateiFinden() throws IOException { throw new IOException("Datei nicht gefunden"); } public static void main(String[] args) { try { dateiFinden(); System.out.println("Restlicher Code im try Block"); } catch (IOException e) { System.out.println(e.getMessage()); } } }

Ausgabe:

Datei nicht gefunden

Hier wirft dateiFinden() ein checked IOException, sodass Aufrufer es entweder behandeln oder deklarieren müssen. Die main()-Methode demonstriert das Abfangen der Exception und verhindert Programmabbruch.


Java

  1. Java Variablen und Literale: Umfassender Leitfaden
  2. Java Ein- und Ausgabe meistern: Drucken, Lesen und Formatieren Ihrer Daten
  3. Java Ausdrücke, Anweisungen und Blöcke verstehen
  4. Java Klassen und Objekte: Praktischer Leitfaden
  5. Java abstrakte Klassen und Methoden: Ein umfassender Leitfaden
  6. Java verschachtelte und innere Klassen meistern: Typen, Beispiele und Best Practices
  7. Multi-Exception Handling in Java meistern
  8. Java Autoboxing und Unboxing meistern: Praktische Beispiele und Best Practices
  9. Java String-Ersetzung meistern: replace(), replaceAll() und replaceFirst() erklärt
  10. Java String toLowerCase() & toUpperCase(): Text-Groß-/Kleinschreibung mit Locale-Bewusstsein konvertieren