Klassen Existiert sowas wie ein ExceptionThrowEvent?

  • Themenstarter Themenstarter mickedplay
  • Beginndatum Beginndatum
M

mickedplay

Gast
Guten Abend,

gibt es eine Möglichkeit, dass man, sobald eine Exception geworfen wird, dass man bspw. den Namen, die Zeile etc. rausfinden kann? Sowas wie ein ExceptionThrowEvent?

Beispiel:

[Java]
public void exeptionThrown (ExceptionThrowEvent e)
{
String package = e.getPackage();
int line = e.getErrorLine();
String name =e.getName();
String className = e.getClassName();
System.out.println("Es trat eine " + name + " im Package " + package + " in der Klasse " + className + " in der Zeile " + line + " auf.";
}
[/Java]
Gibt es sowas in der Art?
Dankesehr!
 
Zuletzt bearbeitet von einem Moderator:
Was genau hast du vor? In der Exception stehen doch all diese Informationen schon drin?!
Naja, in der Konsole kann es schonmal vorkommen, dass sehr viele Nschrichten in sehr kurzer Zeit erscheinen. Und wenn zwischendurch ein Fehler geworfen wurde, würde ich gerne die "Daten" (wie oben bereits "gesagt") abspeichen.
 
Ich möchte aber keine vorgefertigten Sachen nutzen, sondern eigenes. Und deine Antwort war nicht wirklich eine Antwort auf meine Frage.
Komisch, im Eingangspost hast du gefragt, ob "sowas in der Art gibt", dann lehnst du Hinweise auf existierenden Lösungen, mit denen du das machen kannst was du möchtest, mit dem Hinweis ab, dass du lieber was eigenes möchtest. Was denn nun?
Du kannst selbstverständlich das Observer-Pattern so implementieren, wie du es möchtest. Dann müssten aber alle Objekte, bein denen du das Werfen von Exceptions beobachten möchtest, eine Möglichkeit haben, einen "ExceptionListener" zu adden. Ausserdem müsstest du überall dort, wo du bisher Exceptions behandelt hast oder wo überhaupt Exceptions auftauchen können, zusätzlich deine ExceptionThrownEvents absetzen. Oder du definierst nur in deiner Main-Klasse einen ExceptionListener, und läßt alle Objekte jegliche Exception lediglich weiterwerfen bis sie in deiner Hauptklasse angekommen sind. Das klingt aber alles andere als sauber.
Wenn es darum geht, Fehlermeldungen abzuspeichern, sind Logger das Konzept der Wahl. Warum das Rad neu erfinden?
 
Du kannst selbstverständlich das Observer-Pattern so implementieren, wie du es möchtest. Dann müssten aber alle Objekte, bein denen du das Werfen von Exceptions beobachten möchtest, eine Möglichkeit haben, einen "ExceptionListener" zu adden. Ausserdem müsstest du überall dort, wo du bisher Exceptions behandelt hast oder wo überhaupt Exceptions auftauchen können, zusätzlich deine ExceptionThrownEvents absetzen. Oder du definierst nur in deiner Main-Klasse einen ExceptionListener, und läßt alle Objekte jegliche Exception lediglich weiterwerfen bis sie in deiner Hauptklasse angekommen sind. Das klingt aber alles andere als sauber.

Hierfür könnte man auch einen Aspect-Orientierten Ansatz wählen. Sowas wie etwa
Java:
@AfterThrowing(pointcut="*()", throwing="t")
public void doSomeLogginStuff(JoinPoint j, Throwable t) {
    // ...
}
 
Zuletzt bearbeitet:

Neue Themen


Zurück
Oben