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

Shuvayan Ghosh Dastidar 12 Oktober 2023
  1. Java-Fehler Nicht gemeldete Ausnahme muss abgefangen oder zum Auslösen deklariert werden
  2. Ausnahmebehandlung in der Aufruffunktion in Java
  3. Lassen Sie die aufrufende Funktion dieselbe Ausnahme in Java auslösen
Eine nicht gemeldete Ausnahme muss abgefangen oder zum Auslösen deklariert werden

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.

Shuvayan Ghosh Dastidar avatar Shuvayan Ghosh Dastidar avatar

Shuvayan is a professional software developer with an avid interest in all kinds of technology and programming languages. He loves all kinds of problem solving and writing about his experiences.

LinkedIn Website

Verwandter Artikel - Java Error