Eine gute Antwort wäre:

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.

Mögliche Ausnahmen

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.

FRAGE 13:

Welcher Typ von Ausnahme wird ausgelöst, wenn der Anwender für den Divisor eine 0 eingibt?

Inhaltsverzeichnis