Eine gute Antwort wäre:

Nein.

Stack-Protokoll

Hier ist das modifizierte Beispielprogramm mit einem hinzugefügten finally{}-Block. Der catch{}-Block für NumberFormatException wurde entfernt. Jetzt verursachen diese Ausnahmen einen Sprung vom try{}-Block direkt zum finally{}-Bblock.

import java.lang.* ;
import java.io.* ;

public class FinallyUebung
{
  public static void main ( String[] a ) throws IOException
  {
    BufferedReader stdin =
        new BufferedReader ( new InputStreamReader( System.in ) );
    String inData; int zahl=0, div=0 ;

    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 ( 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" );
  }
}

Der Anwender gibt "Unsinn" ein und sieht diesen Output:

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)

FRAGE 17:

Woher kommen die letzten 4 Zeilen des Outputs?

Inhaltsverzeichnis