Die catch{}
-Blöcke sind in der richtigen Reihenfolge,
da ArithmeticException
weder ein
Vorfahre noch ein Nachkomme von
NumberFormatException
ist.
Die andere Reihenfolge der zwei Blöcke würde ebenso funktionieren.
In dem Beispielprogramm
könnte der try{}
-Block
(1) eine IOException
,
(2) eine NumberFormatException
oder
(3) eine ArithmeticException
auslösen.
public static void main ( String[] a ) throws IOException . . . . try { System.out.println("Geben Sie den Zaehler ein:"); inData = stdin.readLine(); zahl = Integer.parseInt( inData ); System.out.println("Geben Sie den Divisor ein:"); inData = stdin.readLine(); div = Integer.parseInt( inData ); System.out.println( zahl + " / " + div + " ist " + (zahl/div) ); } catch (NumberFormatException ex ) { . . . } catch (ArithmeticException ex ) { . . . } }
Eine IOException
könnte bei jeder readLine()
Anweisung auftreten.
Es gibt keinen catch{}
-Block für diesen Typ von Ausnahme,
also muss die Methode sagen throws IOException
.
Eine NumberFormatException
könnte bei jedem Aufruf der
parseInt()
auftreten.
Der erste catch{}
-Block ist für diesen Typ von Ausnahme.
Er wird Ausnahmen auffangen, die von jedem parseInt()
ausgelöst werden.
Ein ArithmeticException
könnte auftreten,
wenn der Anwender Daten eingibt, die
für eine Integer Division nicht erlaubt sind.
Der zweite catch{}
-Block ist für diesen Typ von Ausnahmen.