In einer hypothetischen Situation habe ich eine Klasse wie folgt:
%Vor%Beim Kompilieren bekomme ich
nicht gemeldete Ausnahme
java.io.FileNotFoundException
; muss gefangen oder für geworfen erklärt werden
weil public Scanner(File source) throws FileNotFoundException
.
Um das zu beheben, kann ich scanner = new...
line in eine try / catch-Anweisung einfügen:
Aber gibt es irgendeinen Weg, wie ich etwas tun kann:
%Vor%Dies ist eine hypothetische Situation. Bitte sag nicht "gut, warum würdest du das machen wollen?" oder "Hier ist eine bessere Möglichkeit, einen Scanner zu machen!"
Von JLS §11.2.3 :
Es ist ein Fehler bei der Kompilierung, wenn eine Klassenvariable initialisiert wird ( §8.3.2 ) oder statischer Initialisierer ( §8.7 ) einer benannten Klasse oder Schnittstelle kann eine geprüfte Ausnahmeklasse auslösen.
Der Vollständigkeit halber ist eine ungeprüfte Ausnahme in JLS §11.1.1 :
RuntimeException
und alle Unterklassen sind zusammen die Laufzeitausnahmeklassen.Die ungeprüften Ausnahmeklassen sind die Laufzeitausnahmeklassen und die Fehlerklassen.
Dies ist die einzige Art von Ausnahme, die von einem statischen Initializer ausgelöst werden kann.
Statische Codeblöcke können keine aktivierten Ausnahmen auslösen, Sie können die geprüfte Ausnahme abfangen, sie ordnungsgemäß protokollieren und eine Laufzeitausnahme auslösen. Sie möchten die geprüfte Ausnahme als Hauptursache verschachteln.
Die Ausnahme, die Sie schließlich erhalten, ist jedoch eine Form von ClassInitializationException, und Sie können in die verschachtelten Ausnahmen schauen, um die Ursache zu ermitteln.
Tags und Links java static try-catch throws static-block