Gibt es in Java eine Möglichkeit, alle zu erhalten (zu fangen), exceptions
anstatt die Ausnahme einzeln zu fangen?
java
exception
file
exception-handling
Johanna
quelle
quelle
Antworten:
Wenn Sie möchten, können Sie Ihren Methoden Throws-Klauseln hinzufügen. Dann müssen Sie die überprüften Methoden nicht sofort abfangen. Auf diese Weise können Sie die
exceptions
späteren (möglicherweise gleichzeitig mit anderenexceptions
) fangen .Der Code sieht aus wie:
Dann können Sie später mit dem umgehen,
exceptions
wenn Sie mit ihnen in dieser Methode nicht umgehen wollen.Um alle Ausnahmen abzufangen, kann ein Codeblock Folgendes auslösen: (Dies fängt auch ab, was
Exceptions
Sie selbst geschrieben haben.)Der Grund dafür ist, dass
Exception
die Basisklasse für alle Ausnahmen ist. Daher ist jede Ausnahme, die ausgelöst werden kann, einException
(Großbuchstabe 'E').Wenn Sie Ihre eigenen Ausnahmen behandeln möchten, fügen Sie einfach einen
catch
Block vor der generischen Ausnahme hinzu.quelle
Ich bin damit einverstanden, dass es kein guter Stil ist, eine rohe Ausnahme abzufangen, aber es gibt Möglichkeiten, Ausnahmen zu behandeln, die eine überlegene Protokollierung und die Fähigkeit bieten, mit dem Unerwarteten umzugehen. Da Sie sich in einem außergewöhnlichen Zustand befinden, sind Sie wahrscheinlich mehr daran interessiert, gute Informationen zu erhalten als an der Reaktionszeit. Daher sollte die Leistung nicht zu einem großen Erfolg werden.
Dies berücksichtigt jedoch nicht die Tatsache, dass IO auch Fehler auslösen kann. Fehler sind keine Ausnahmen. Fehler unterliegen einer anderen Vererbungshierarchie als Ausnahmen, obwohl beide die Basisklasse Throwable gemeinsam nutzen. Da IO Fehler auslösen kann, möchten Sie möglicherweise so weit gehen, Throwable zu fangen
quelle
Fangen Sie die Basisausnahme 'Ausnahme' ab
quelle
Es ist eine schlechte Praxis, eine Ausnahme abzufangen - sie ist einfach zu weit gefasst , und Sie verpassen möglicherweise so etwas wie eine NullPointerException in Ihrem eigenen Code.
Bei den meisten Dateivorgängen ist IOException die Stammausnahme . Besser, das stattdessen zu fangen.
quelle
Ja da ist.
quelle
Sie können mehrere Ausnahmen in einem einzelnen Fangblock abfangen.
quelle
Wollen Sie damit sagen Fang ein
Exception
jeglicher Art , die ausgelöst wird, im Gegensatz zu nur bestimmte Ausnahmen?Wenn ja:
quelle