Exceptions werfen: Methodennamen automatisch einfügen?
-
Ich habe jetzt damit begonnen am Anfang einer jeden Methode die übergebenen Argumente auf Gültigkeit zu überprüfen. Falls sich ein Argument als ungültig herausstellt, so werfe ich eine IllegalArgumentException, die auch den Namen der Methode enthält, damit der Fehlerort sofort gefunden werden kann.
Was ich mich aber frage ist, ob der Methodenname nicht irgendwie automatisch eingefügt werden kann, was 1. weniger Arbeit und 2. weniger Fehleranfällig wäre (z.B. wenn man den Methodennamen irgendann ändert, aber dabei vergisst, den zur geworfenen Exception gehörenden Text auch zu ändern.
Beispiel:
if(_i < 1) throw new IllegalArgumentException("AdList.getAD: ad numbering starts with 1.");
Geht nicht sowas wie:
if(_i < 1) throw new IllegalArgumentEception(METHODNAME + ": ad numbering starts with 1.");
?
-
Jede Exception hat eine getStackTrace-Methode und eine printStackTrace-Methode. Suchst Du das?
EDIT: Also dadurch kriegst Du es natürlich nicht einfach so in die Fehlermeldung rein. Ich wollte nur sagen. Dass die entsprechende Information sowieso in Exception-Objekten enthalten ist. Die Frage ist dann halt nur, wie Du sie rauskriegst.
-
StackTraceElement e = Thread.currentThread().getStackTrace()[3]; System.out.println( e.getMethodName() );
-
Rhombicosidodecahedron schrieb:
StackTraceElement e = Thread.currentThread().getStackTrace()[3]; System.out.println( e.getMethodName() );
Ah, interessant, dass man da auch über Thread rankommt.
-
Hi
Ich denke das die bisherigen Antworten in die Falsche Richtung gehen...
Mir fällt eigentlich nur die Reflection API von Java ein. Da kann man bestimmt den Methodennamen zur Laufzeit bestimmen.
-
JCoder schrieb:
Ich denke das die bisherigen Antworten in die Falsche Richtung gehen...
Warum? So erhält man doch sicherlich den Methodennamen.
Das Einzige, wo ich mir nicht so sicher bin, ist der Index.