Exception wird niemals in den Körper der entsprechenden try-Anweisung geworfen

9

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?

    
user3407967 24.03.2014, 15:17
quelle

4 Antworten

11

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 ).

%Vor%

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 .

    
Christian 24.03.2014, 15:52
quelle
6

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:

%Vor%

Ü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.

    
Duncan Jones 24.03.2014 15:21
quelle
0

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.

    
Mohit gupta 17.09.2017 07:17
quelle
0

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

    
Astha 13.01.2018 02:39
quelle

Tags und Links