Exception ist die Basisklasse aller Ausnahmen - so wird beispielsweise IOExeption von Exception abgeleitet. Aus diesem Grund kann das Beispielprogramm auch folgendermaßen codiert werden:
import java.io.*; public class exception5 { static int i; public static void main (String args[]) throws Exception { InputStreamReader datenstrom = new InputStreamReader(System.in); BufferedReader dateneingabe = new BufferedReader(datenstrom); i = Integer.parseInt(dateneingabe.readLine()); System.out.println("Die Zahl " + i + " wurde eingegeben ;-)"); } }
Die Verwendung einer nicht übergeordneten Exception ist (sinnvollerweise) nicht möglich. Im folgenden Beispiel würde deshalb eine Ein-/Ausgabe-Ausnahme der Klasse java.io.* nicht abgefangen.
import java.io.*; public class exception5 { static int i; public static void main (String args[]) throws FileNotFoundException { InputStreamReader datenstrom = new InputStreamReader(System.in); BufferedReader dateneingabe = new BufferedReader(datenstrom); i = Integer.parseInt(dateneingabe.readLine()); System.out.println("Die Zahl " + i + " wurde eingegeben ;-)"); } }
Da die Methode readLine() eine IOException wirft, meldet der Compiler meldet bei der Übersetzung, dass sie nicht aufgefangen würde:
javac exception5.java exception5.java:10: Exception java.io.IOException must be caught, or it must be declared in the throws clause of this method. i = Integer.parseInt(dateneingabe.readLine()); ^ 1 error Compilation exited abnormally with code 1 at Tue Dec 31 13:28:04
Das Konzept der Exceptions ermöglicht eine umfassende Fehlerbehandlung. Da das Werfen und Auffangen der Exceptions über die angegebenen Klassen hinweg oder mit Hilfe der übergeordneten Klassen erfolgt, besteht jedenfalls die Gefahr, dass der Programmcode sehr schnell unübersichtlich wird. Um die Programmlogik möglichst klar zu halten, sollten eigene Exceptions daher äußerst sparsam verwendet werden.