Reihenfolge der Fanganweisung?

7

In try - catch Syntax, ist es wichtig, in welcher Reihenfolge catch-Anweisungen für FileNotFoundException und IOExceptipon geschrieben werden?

    
Jigar Joshi 26.07.2012, 10:20
quelle

8 Antworten

8

Ja. Die FileNotFoundException wird von der IOException geerbt. Ausnahme-Unterklassen müssen zuerst abgefangen werden.

    
user1920811 26.07.2012, 10:20
quelle
10

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

    
Jigar Joshi 26.07.2012 10:21
quelle
3

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

    
Pramod Kumar 26.07.2012 10:27
quelle
2

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.

    
Marko Topolnik 26.07.2012 10:23
quelle
1

naja ... von Unterklassen zur Oberklasse ... das ist der ideale Weg ... sonst bekommst du unerreichbaren Codefehler

    
Ahmad 26.07.2012 10:22
quelle
0

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!

    
LGAP 26.07.2012 10:24
quelle
0

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 .

    
amicngh 26.07.2012 10:24
quelle
0

IOException ist die Oberklasse von FileNotFoundException .So fist fangen Subklasse, d. h. FileNotFoundException und dann müssen Sie IOException

fangen

Zum Beispiel

%Vor%     
ShinnedHawks 09.04.2015 10:44
quelle