5.19.1 Die Behandlung von Ausnahmebedingungen ("try-catch"-Anweisung)

...

Das folgende sehr einfache Programmbeispiel soll nur die Ausnahmebehandlung von Java zeigen:

Klasse TryCatchBsp
/* * TryCatchBsp.java */ package at.beringer.oopBuch.einAusgabe; import java.io.*; /** Einfache Applikation zum Testen von Exceptions. <p> Es wird eine nichtnegative ganze Zahl über die Tastatur gelesen. <br /> Eine 'NumberFormatException' behandelt standardmäßig die Eingabe einer ganzen Zahl. Durch die Eingabe einer negativen Zahl wird diese Exception explizit ausgelöst. </p> <p> Der Einfachheit halber beinhaltet diese Klasse Elemente einer DAO-Klasse und einer Applikationsklasse! </p> <hr /> @since August 2000 @version September 2012 (Refaktorierung - lesenEingabe) @see ProgrammTryCatch @author Beringer Alfred */ public class TryCatchBsp { // ------------------------------------------------------------------------- // Klassenkonstante // ------------------------------------------------------------------------- /** Zeichenkette, die das Ende der Tastatureingabe definiert. <p> Dient als zusätzliche EOF-Kennzeichnung (zusätzlich zur Eingabe von '^Z') </p> */ private static final String EOF = "EOF"; // ------------------------------------------------------------------------- // Instanzattribute // ------------------------------------------------------------------------- /** Zu erfassender Datenwert */ private int zinsfuss; private boolean eof = false; private BufferedReader tastatur = new BufferedReader( new InputStreamReader(System.in)); // ------------------------------------------------------------------------- // Instanzmethoden // ------------------------------------------------------------------------- /** Start-Methode zum Testen der Applikation */ public void start() { boolean ok; ok = lesen(); while (!eof) { if (ok) { System.out.println("Zinsfuss = " + zinsfuss); // Verarbeitung bei korrekter Eingabe } ok = lesen(); } } // ------------------------------------------------------------------------- // Private Instanzmethoden // ------------------------------------------------------------------------- /** Liest eine Zahl über die Tastatur ein. <p> Eine negative Zahl löst explizit eine 'NumberFormatException' aus (analog zur Eingabe von beispielsweise Buchstaben) </p> @return true, wenn eine nichtnegative ganze Zahl gelesen wurde */ private boolean lesen() { String eingabe; try { eingabe = lesenEingabe( "Bitte ganzzahligen nichtnegativen Zinsfuss eingeben (Ende: " + EOF + " oder ^Z):"); if (eof) { return true; // EOF ist kein Fehler } zinsfuss = Integer.parseInt(eingabe); if (zinsfuss < 0) { throw new NumberFormatException("Negativer Zinsfuss!"); } } catch (IOException fehler) { System.err.println("Eingabe-Fehler! " + fehler.getMessage()); return false; } catch (NumberFormatException fehler) { System.out.println("Fehler! getMessage = " + fehler.getMessage()); fehler.printStackTrace(); return false; } return true; } // ------------------------------------------------------------------------- /** Liest eine Zeile von der Tastatur. <p> Eingabe: alle Zeichen bis zur 'Return'- bzw. 'Enter'-Taste. </p> <p> Ende der Eingabe durch die Zeichenfolge "EOF" oder durch '^Z' (= 'Strg' + 'Z'). </p> Bemerkungen: <ul> <li>'EOFException' tritt bei der Standardeingabe nicht ein!</li> <li>'^Z' = EOF-Kennung bei Konsoleneingabe, d.h.: EOF ist äquivalent zur Eingabe von '^Z'.</li> <li>Eingabe von '^Z' liefert 'null' für die Eingabe.</li> <li>EOF ist also gleichbedeutend mit 'null' für die Eingabe.</li> </ul> @param eingabeaufforderung Eingabeaufforderung @return eingegebene Daten oder 'null' (bei Eingabe von '^Z') @throws IOException */ private String lesenEingabe(String eingabeaufforderung) throws IOException { String eingabe; System.out.println(eingabeaufforderung); eingabe = tastatur.readLine(); // EOF prüfen: if ( (eingabe == null) || (eingabe.equals(EOF)) ) { eof = true; } return eingabe; } }


Programmklasse ProgrammTryCatch
/* * ProgrammTryCatch.java */ package at.beringer.oopBuch.einAusgabe; /** Programmklasse (Applikation) zum Testen der Klasse 'TryCatchBsp'. <hr /> @since August 2000 @see TryCatchBsp @author Beringer Alfred */ public class ProgrammTryCatch { // ------------------------------------------------------------------------- /** Der Einstiegspunkt für die Anwendung. @param args Kommandozeilenparameter */ public static void main(String[ ] args) { TryCatchBsp test = new TryCatchBsp(); test.start(); } }


Weiter
zu den Java-Klassenbeispielen von Kapitel 6 (Ein-/Ausgabe von Daten)
zu den Java-Klassenbeispielen von Kapitel 7 (GUI)
zu Kapitel 8 (JDBC)
zu den C#-Klassenbeispielen von Kapitel 9.19.1 (Exceptions)
zu den C#-Klassenbeispielen von Kapitel 10 (Ein-/Ausgabe von Daten)
zu Kapitel 12 (PL/I)
zu Kapitel 13 (Reservierte Worte)
Zurück
zum Anfang dieses Kapitels
zum Inhaltsverzeichnis
 
zu Kapitel 1
zu den Klassenbeispielen von Kapitel 2
zur Parameterübergabe (Kapitel 2.7.1)
zu Kapitel 3
zu den Klassenbeispielen von Kapitel 4
Zur
Java-Dokumentation der Java-Beispiele