Ist eine ArithmeticException
eine geprüfte Ausnahme?
Nein.
Hier ist ein Beispielprogramm. Beachten Sie, dass die methodeA
zwei
try/catch-Strukturen hat. (Sie könnte auch nur mit einer geschrieben werden.)
import java.io.* ; public class SchwarzenPeterWeiterrreichen { public static int methodeB( int divisor ) throws ArithmeticException { int ergebnis = 12 / divisor; // könnte eine ArithmeticException auslösen return ergebnis; } public static void methodeA( String input ) { int zahl = 0; try { zahl = Integer.parseInt( input ); // könnte eine NumberFormatException auslösen } catch ( NumberFormatException falscheDaten ) { System.out.println( "Falsche Eingabedaten!!" ); falscheDaten.printStackTrace(); return; // das ist notwendig damit nicht der nächste // try-Block die Kontrolle bekommt } try { System.out.println( "Das Ergebnis ist: " + methodeB( zahl ) ); } catch ( ArithmeticException nullDivision ) { System.out.println( "Division durch Null!!" ); nullDivision.printStackTrace(); } } public static void main ( String[] a ) throws IOException { BufferedReader stdin = new BufferedReader ( new InputStreamReader( System.in ) ); String inData = ""; System.out.println("Geben Sie den Divisor ein:"); inData = stdin.readLine(); methodeA( inData ); System.out.println("weiter mit main...!"); } }
Die Klausel "throws ArithmeticException
" im Header der methodeB()
ist nicht erforderlich, da ArithmeticException
ungeprüft ist.
Wenn der Anwender einen String "0" eingibt, dann
main() ruft methodeA methodeA ruft methodeB methodeB verursacht eine ArithmeticException bei einer Division durch Null methodeB reicht die Ausnahme zurück an methodeA methodeA fängt die Ausnahme auf und gibt "Division durch Null!!" aus Kontrolle kehrt zurück zu main() (die "weiter mit main...!" ausgibt.)
Kopieren Sie das Programm nach Notepad, speichern, kompilieren und führen Sie es aus. Experimentieren Sie ein bisschen damit. Ausnahmebehandlung ist etwas knifflig; und ein wenig Übung wird Ihnen für später helfen.