Eine gute Antwort wäre:

Das Stack-Protokoll zeigt die Situation:

Die throw-Anweisung

Ihr Programm kann selbst eine Ausnahme auslösen wenn es ein Problem entdeckt. Das Problem kann auf Ihre Applikation beschränkt sein. Zum Beispiel angenommen ein Programm für eine Versicherungsgesellschaft berechnet das Alter einer Person in dem es das Jahr des Geburtstags vom Jahr 2000 subtrahiert. Dann berechnet es die Anzahl der Jahre, die die Person gefahren ist, indem es 16 vom Alter subtrahiert. Personen, die weniger als 4 Jahre gefahren sind, werden mit einer Jahresversicherungsgebühr von $1000 belastet, andernfalls mit $600. Wenn das Alter einer Person unter 16 liegt, sollte sie keine Versicherung benötigen, also wird eine Ausnahme ausgelöst.

import java.io.* ;
import java.util.*;

public class Versicherungsrate
{
  public static int  rateBerechnen( String geburt ) throws Exception
  {
    GregorianCalendar aktuell = new GregorianCalendar(); // aktuelles Datum
    final int JAHR = aktuell.get(Calendar.YEAR);
    int alter = 0;
    int geburtsjahr = Integer.parseInt( geburt );
    alter = JAHR - geburtsjahr;

    if ( alter < 16 )
    {
      throw new Exception("Alter ist: " + alter );
    }
    else
    {
      int fahrpraxis = alter - 16;
      if ( fahrpraxis < 4 )
        return 1000;
      else
        return 600;
    }
  }

  public static void main ( String[] a ) throws IOException
  {
    BufferedReader stdin =
        new BufferedReader ( new InputStreamReader( System.in ) );

    String  inData = null;
    System.out.println("Geben Sie Ihr Geburtsjahr ein:");
    inData = stdin.readLine();

    try
    {
      System.out.println( "Ihre Versicherung betraegt: " + rateBerechnen( inData ) );
    }
    catch ( Exception oops )
    {
      System.out.println( "Sie sind zu jung fuer eine Versicherung!" );
    }

  }
}

Die rateBerechnen() Methode konstruiert eine Exception und reicht sie an ihren Aufrufer, main(), weiter, wenn der unzulässige Wert erkannt wird. Die Ausnahme wird von main() aufgefangen und die geeignete Maßnahme ergriffen.

FRAGE 11:

(Software Designfrage: ) Glauben Sie, dass das ein gut entworfenes Programm ist?

Inhaltsverzeichnis