Frage zu Übungsaufgabe
-
Hallo,
ich habe eine Übungsaufgabe mit die ich nicht verstehe kann mir das bitte jemand erklären.
Aufgabe:
Stellen Sie sich vor, Sie wollen an einer Stelle Ihres Programms alle möglichen auftretenden Exceptions und RuntimeExceptions behandeln. Welche von den beiden Ausnahmen müssen Sie zuerst abfangen - die vom Typ Exception oder die vom Typ RuntimeExceptionMeine Lösung wäre folgende:
Ich fange zuerst die RuntimeException ab weil RuntimeException von Exception erbt und wenn ich zuerst Exception abfange wird der catch-block für RuntimeException nie erreichttry{ //mach Irgendwas } catch (RuntimeException runex){} catch (Exception ex){}
die Musterlösung machts aber genau anders herum. Hab ich die Aufgabe oder die Exceptions nicht verstanden?
/* * "Grundkurs Programmieren in Java - Band 1 (3. Auflage, 2006)I" * 2001-2006, Carl Hanser Verlag * Loesungsvorschlag zu Aufgabe (Version 3.0) * (c) 2001-2006 D. Ratz, J. Scheffler, D. Seese, J. Wiesenberger * */ public class ExceptionTest { public static void main (String[] args) { try { // mache irgendwas } catch (Exception ex) { System.out.println( "Exception abgefangen! " ); } catch (RuntimeException ex) { System.out.println( "RuntimeException abgefangen!" ); } } }
Das ganze ist aus dem "Grundkurs Programmieren in Java - Band 1"
Gruß
eiskalt
-
Ich denke dein Code müsste stimmen und die Lösung ist falsch.
Die Lösung im Buch ist wenig sinnvoll, da das catch( RuntimeException ) sowieso nie erreicht wird, da RuntimeException tiefer in der Vererbungshierarchie liegt als Exception. Sollte sogar einen compilation error geben mit "Unreachable code" oder sowas.
Als goldene Regel:
Die catch-Klauseln immer so anordnen, dass Klassen, die zu oberst in der Vererbungshierarchie am Schluss kommen.
-
na gott sei Dank und ich dachte schon ich bin blöde
THX