"Grundkurs Programmieren in Java - (5. Auflage, 2010)"
2001-2010, Carl Hanser Verlag
Lösungsvorschlag zu Aufgabe 10.5 (Version 3.0)
(c) 2001-2010 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