"Grundkurs Programmieren in Java - Band 1 (3. Auflage, 2006)"
2001-2007, Carl Hanser Verlag
Lösungsvorschlag zu Aufgabe 13.8 (Version 4.0)
(c) 2001-2007 D. Ratz, J. Scheffler, D. Seese, J. Wiesenberger
Es gilt folgende Vererbungs-Hierarchie:
java.lang.Object
|
+--java.lang.Throwable
|
+--java.lang.Exception
|
+--java.lang.RuntimeException
Jede RuntimeException ist also auch eine Exception (aber nicht umgekehrt).
Schreiben wir also
try {
// mache irgendwas
}
catch (Exception ex) {
System.out.println( "Exception abgefangen! " );
}
catch (RuntimeException ex) {
System.out.println( "RuntimeException abgefangen!" );
}
so würde schon der erste catch-Block auch eine RuntimeException abfangen, weshalb wir
beim Compiler-Aufruf folgende Fehlermeldung erhalten:
E:\hiwi\temp>javac ExceptionTest.java
ExceptionTest.java:18: exception java.lang.RuntimeException has already been cau
ght
catch (RuntimeException ex) {
^
1 error
Wir müssen also immer zuerst die weiter unten in der Hierarchie stehende Exception abfangen!
Quelltext: ExceptionTest.java