Eigene Exceptions werden von der Klasse Exception abgeleitet. Dazu wird das Java-Schlüsselwort extend verwendet12. Tritt innerhalb des try - Blockes eine Exception auf, so wird sie mit dem Schlüsselwort throw ``geworfen'' - ein geeigneter catch - Block liefert die entsprechende Fehlermeldung:
import java.io.*; class Eingabe extends Exception { public Eingabe(String fehlermeldung) { super(fehlermeldung); } } public class exception2 { static int i; public static void main (String args[]) throws IOException { try { InputStreamReader datenstrom = new InputStreamReader(System.in); BufferedReader dateneingabe = new BufferedReader(datenstrom); i = Integer.parseInt(dateneingabe.readLine()); if (i < 0) throw new Eingabe("negative Zahl!"); } catch (Eingabe e) { System.out.println(e.toString()); } System.out.println("Die Zahl " + i + " wurde eingegeben ;-)"); } }
Beachte das Schlüsselwort super im Konstruktor Eingabe(). Damit wird der Konstruktor der Superklasse (konkret der Klasse Exception) aufgerufen und die Parameterliste übergeben. Im Beispiel kann damit die als Parameter übergebene Fehlermeldung fehlermeldung als Ausgabe beim Auffangen der Exception verwendet werden.
Wird eine negative Zahl eingegeben erhalten wir somit:
-123 Eingabe: negative Zahl! Die Zahl -123 wurde eingegeben ;-)