Geben Sie den Zaehler ein:
Unsinn
Wenn die Division nicht funktioniert hat, haben Sie falsche Daten eingeben.
Exception in thread "main" java.lang.NumberFormatException: Unsinn
        at java.lang.Integer.parseInt(Integer.java:409)
        at java.lang.Integer.parseInt(Integer.java:458)
        at FinallyUebung.main(FinallyUebung.java:16)

Der try{}-Block hat eine Ausnahme vom Typ NumberFormatException ausgelöst, aber es gab keinen catch{}-Block dafür. Also: (1) wurde der finally-Block ausgeführt und dann (2) wurde die Ausnahme an den Aufrufer zurückgegeben (in diesem Fall das Java Laufzeitsystem), das (3) die letzten vier Zeilen ausgegeben hat.

Stack-Protokoll

Die letzten vier Zeilen werden ein Stack-Protokoll genannt. Sie werden nachher sehen wie Sie sie ausgeben können ohne das Programm zu stoppen. Hier ist ein Teil des Programms:

    try
    {
      System.out.println("Geben Sie den Zaehler ein:");
      ...
      System.out.println("Geben Sie den Divisor ein:");
      ...
      System.out.println( zahl + " / " + div + " ist " + (zahl/div) );
    }

    catch ( ArithmeticException ex )
    {
      System.out.println
        ("Sie koennen  " + zahl + " nicht durch " + div + " dividieren");
    }

    finally
    {
      System.out.println
        ("Wenn die Division nicht funktioniert hat,
          haben Sie falsche Daten eingeben."        );
    }

    System.out.println("Good-bye" );

Hier sind weitere Beispiele von Output:

Output 1:
Geben Sie den Zaehler ein:
26
Geben Sie den Divisor ein:
4
26 / 4 is 6
Wenn die Division nicht funktioniert hat, haben Sie falsche Daten eingeben.
Good-bye
Output 2:
Geben Sie den Zaehler ein:
26
Geben Sie den Divisor ein:
0
Sie koennen 26 nicht durch 0 dividieren
Wenn die Division nicht funktioniert hat, haben Sie falsche Daten eingeben.
Good-bye
Output 3:
Geben Sie den Zaehler ein:
26
Geben Sie den Divisor ein:
Zero
Wenn die Division nicht funktioniert hat, haben Sie falsche Daten eingeben.
Exception in thread "main" java.lang.NumberFormatException: Zero
        at java.lang.Integer.parseInt(Integer.java:409)
        at java.lang.Integer.parseInt(Integer.java:458)
        at FinallyUebung.main(FinallyUebung.java:19)

FRAGE 18:

Bei welchem Output führte der try{}-Block zu keiner Ausnahme?
Bei welchem Output hat der try{}-Block eine Ausnahme vom Typ ArithmeticException ausgelöst?
Bei welchem Output hat der try{}-Block eine unbehandelte
Ausnahme ausgelöst (eine ohne catch{}-Block)?
Bei welchem Output wurde der finally{}-Block ausgeführt?
Inhaltsverzeichnis