Eine nicht gemeldete Ausnahme muss abgefangen oder zum Auslösen deklariert werden
-
Java-Fehler
Nicht gemeldete Ausnahme muss abgefangen oder zum Auslösen deklariert werden
- Ausnahmebehandlung in der Aufruffunktion in Java
- Lassen Sie die aufrufende Funktion dieselbe Ausnahme in Java auslösen
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.
Verwandter Artikel - Java Error
- Adresse wird bereits verwendet JVM_Bind-Fehler in Java
- Android Java.Lang.IllegalStateException behoben: Methode der Aktivität konnte nicht ausgeführt werden
- Ausnahme im Hauptthread Java.Lang.ClassNotFoundException in IntelliJ IDEA
- Ausnahme im Hauptthread Java.Lang.NoClassDefFoundError
- Beheben Sie das Problem, dass Java nicht installiert werden kann. Es gibt Fehler in den folgenden Schaltern
- Beheben Sie den Fehler `Es wurde keine Java Virtual Machine gefunden` in Eclipse