Ich habe ein Problem mit der Ausnahmebehandlung in Java, hier ist mein Code. Ich habe einen Compilerfehler, wenn ich versuche, diese Zeile auszuführen: throw new MojException("Bledne dane");
. Der Fehler ist:
exception MojException wird niemals in den Körper der entsprechenden try-Anweisung
geworfen
Hier ist der Code:
%Vor%Und hier ist ein Code von MojException:
%Vor%Kann mir jemand dabei helfen?
Ein catch-block in einer try-Anweisung muss genau die Ausnahme abfangen, die der Code innerhalb des try {}
-blocks auslösen kann (oder eine Superklasse davon ).
Was Sie versuchen, ist dies:
%Vor% Dies wird zu einem Compilerfehler führen, weil Ihr Java weiß, dass Sie versuchen, eine Ausnahme zu fangen, die NIEMALS NIEMALS auftreten wird. So erhalten Sie: exception ExceptionA is never thrown in body of corresponding try statement
.
Wie in den Kommentaren erwähnt, können Sie keine Ausnahme abfangen, die nicht durch den Code in Ihrem try
-Block ausgelöst wird. Versuchen Sie, Ihren Code zu ändern:
Überprüfen Sie immer die Dokumentation um zu sehen, welche Ausnahmen von jeder Methode ausgelöst werden. Vielleicht möchten Sie auch vorher das Thema checked vs unchecked exceptions lesen verursacht Verwirrung in der Zukunft.
Denken Sie immer daran, dass Sie im Falle einer geprüften Ausnahme erst nach dem Auslösen der Ausnahme fangen können (entweder werfen Sie oder eine eingebaute Methode in Ihrem Code kann werfen), aber im Falle einer unkontrollierten Ausnahme fangen Sie selbst wenn Sie nicht geworfen haben diese Ausnahme.
Jede Klasse, die Exception
class erweitert, ist eine benutzerdefinierte Checked-Exception-Klasse , wobei jede Klasse, die RuntimeException
erweitert, Unchecked exception class ist.
Wie in Benutzerdefinierten Ausnahmen erwähnt, sind diese aktiviert oder deaktiviert
Wenn also die überprüfte Ausnahme (sei es eine benutzerdefinierte oder eine integrierte Ausnahme) nicht ausgelöst wird, tritt ein Fehler bei der Kompilierung auf.
Überprüfte Ausnahme sind die Ausnahmen, die zum Zeitpunkt der Kompilierung überprüft werden.
Nicht angekreuzte Ausnahme sind die Ausnahmen, die zur kompilierten Zeit nicht überprüft werden