In try
- catch
Syntax, ist es wichtig, in welcher Reihenfolge catch-Anweisungen für FileNotFoundException
und IOExceptipon
geschrieben werden?
Ja. Die FileNotFoundException wird von der IOException geerbt. Ausnahme-Unterklassen müssen zuerst abgefangen werden.
Ja, Spezifische Ausnahme sollte zuerst geschrieben werden, danach breiter,
Es ist so, als würdest du alle Tiere zuerst im Raum rufen und nachdem du versucht hast zu sehen, ob da draußen ein Mensch ist
Zum Beispiel
%Vor%Gibt Ihnen einen Kompilierzeitfehler
Bestimmte Ausnahmen müssen vor einer allgemeinen Ausnahme abgefangen werden, sonst erhalten Sie einen nicht erreichbaren Codefehler. Zum Beispiel -
%Vor% Wenn Sie den% cat_de% catch-Block vor den% catch_de% oder Exception
catch-Block setzen, erhalten Sie einen Kompilierzeitfehler. (Nicht erreichbarer Code).
Auf einer Tangente würde ich Ihnen raten, zweimal darüber nachzudenken, ob Sie all diese Fangblöcke überhaupt brauchen. Sind Sie sicher, dass Sie für jeden Fall eine sinnvolle Behandlung durchführen werden? Wenn Sie nur eine Nachricht ausdrucken wollen, können Sie nur IOException
abfangen.
Ja natürlich. Die spezifischere Ausnahme sollte in den ersten catch-Block geschrieben werden und die generischen Ausnahmen wie catch(Exception ex){ex.printStackTrace();}
sollten in den finalen catch-Block geschrieben werden.
Wenn Sie den anderen Weg versuchen, ist Ihre spezifische Ausnahme vom JVM-Compiler nicht erreichbar!
IOException
ist die Oberklasse von FileNotFoundException
. Wenn Sie also die Anweisung catch für IOException
über die für FileNotFoundException
setzen, wird der Code für den zweiten Fang unerreichbar und der Compiler wirft dafür einen error
. Der Grund ist einfach: every object of a sub class can be easily accepted by a super class reference
.
IOException ist die Oberklasse von FileNotFoundException .So fist fangen Subklasse, d. h. FileNotFoundException und dann müssen Sie IOException
fangenZum Beispiel
%Vor%Tags und Links java exception-handling exception try-catch