Das Stack-Protokoll zeigt die Situation:
throw
-AnweisungIhr 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.