Als Experiment habe ich beschlossen, den folgenden Haltepunkt im Eclipse-Debugger zu aktivieren: Throwable [Include Subclasses]: caught and uncaught
. Ich ließ dann meinen Code (der soweit ich weiß "gut" läuft) unter dem Debugger laufen und war überrascht zu sehen, dass Dutzende von Ausnahmen durch den Standard-J2SE-Bibliothekscode ausgelöst und abgefangen wurden (vorher unbekannt), als mein Code war normal laufen für alles was ich weiß.
Hier sind nur einige der Java-Framework-Funktionen, die ich beim Auslösen von Ausnahmen gefunden habe: URLClassLoader.findClass
, FileDirContext.lookup
und WebappClassLoader.findClassInternal
.
Wird dies als normales Verhalten für eine Java-Anwendung betrachtet? Ist das etwas, was ich untersuchen sollte? Mein Code scheint so gut zu laufen, wie ich weiß.
Beim Laden von Klassen ausgelöste Ausnahmen sind Relikte aus frühen Tagen des Java-Verlaufs, als das Laden von Klassen dazu gedacht war, sie zu verwenden, um zu kommunizieren, dass ein Klassenladeprogramm keine Klasse finden konnte. Es wird jetzt nicht als ein gutes Muster angesehen, aber es bleibt dort und wird wahrscheinlich nie geändert werden, da es Teil von APIs ist. Nichts, vor dem man Angst haben könnte.
Obwohl es schlecht ist, Ihren Code so zu gestalten (Ausnahmen sind langsam und sollten für außergewöhnliche Umstände verwendet werden), ist Bhesh Gurungs Kommentar der richtige Weg, darüber nachzudenken. Befolgen Sie die Spezifikation des Codes, auf den Sie sich verlassen, und machen Sie sich keine Sorgen über die Implementierung.
Tags und Links java