HOWTO · Java

Eine nicht gemeldete Ausnahme muss abgefangen oder zum Auslösen deklariert werden

Dieses Tutorial erläutert den Fehler `Nicht gemeldete Ausnahme` in Java.

Auf dieser Seite

Java ist eine objektorientierte, stark typisierte und kompilierte Sprache und hat das Konzept von Klassen, um verschiedene Aspekte der Programmierung wie Vererbung und Polymorphismus zu nutzen. Es ist auch eine gute Unterstützung für die Behandlung von Ausnahmen aufgrund stark verschachtelter Funktionen.

Dieser Artikel demonstriert den Kompilierzeitfehler nicht gemeldete Ausnahme muss abgefangen oder als ausgelöst deklariert werden in Java.

Java-Fehler Nicht gemeldete Ausnahme muss abgefangen oder zum Auslösen deklariert werden

Betrachten Sie das folgende Codebeispiel.

public class MyApp {
  public static void main(String[] args) {
    System.out.println("Hello World");
    System.out.println(divide(3, 0));
  }

  public static int divide(int a, int b) throws Exception {
    int c = a / b;
    return c;
  }
}

Der folgende Fehler wird erhalten, wenn das obige Codebeispiel mit javac MyApp.java kompiliert wird.

MyApp.java:7: error: unreported exception Exception; must be caught or declared to be thrown
        System.out.println(divide(3,0));
                                 ^
1 error

Also, was passiert hier?

Die Funktion divide(int a, int b) wirft eine Exception, die nirgendwo in der aufrufenden Funktion abgefangen oder behandelt wird, die in diesem Fall main(String[] args) ist. Es kann gelöst werden, indem die Ausnahme behandelt wird oder die aufrufende Funktion dieselbe Ausnahme auslöst.

Ausnahmebehandlung in der Aufruffunktion in Java

Im letzten Abschnitt war dies also einer der Ansätze, um den Fehler zu beheben. Lassen Sie es uns anhand eines Beispiels verstehen, das das oben besprochene Codebeispiel berücksichtigt.

public class MyApp {
  public static void main(String[] args) {
    System.out.println("Hello World");
    try {
      System.out.println(divide(3, 0));
    } catch (Exception e) {
      System.out.println("Division by zero !!!");
    }
  }

  public static int divide(int a, int b) throws Exception {
    int c = a / b;
    return c;
  }
}

Wenn wir nun versuchen, den Code zu kompilieren, wird er erfolgreich kompiliert, und die folgende Ausgabe wird beim Ausführen des Codes erhalten.

Hello World
Division by zero !!!

Somit wird die Ausnahme nun in der Methode main behandelt und die Anweisung print im Block catch ausgeführt.

Lassen Sie die aufrufende Funktion dieselbe Ausnahme in Java auslösen

Der andere Ansatz besteht also darin, dass die aufrufende Funktion auch dieselbe Ausnahme auslöst. Nehmen wir ein Beispiel dafür, wie das erreicht werden kann.

public class MyApp {
  public static void main(String[] args) throws Exception {
    System.out.println("Hello World");
    try {
      performOperation();
    } catch (Exception e) {
      System.out.println("Division by zero!!");
    }
  }

  public static void performOperation() throws Exception {
    divide(3, 0);
  }

  public static int divide(int a, int b) throws Exception {
    int c = a / b;
    return c;
  }
}

Also haben wir das vorherige Beispiel genommen und eine zusätzliche Funktion, performOperation(), dazwischen eingefügt. Wir haben dafür gesorgt, dass die Funktion performOperation() auch dieselbe Exception auslöst wie divide(int a, int b); Daher wird es erfolgreich kompiliert und es kann die gleiche Ausgabe erhalten werden.