Ja, genau so in der Art hatte ich mir das gedacht. Fragt sich
nun eben nur, was die handleError-Methode am sinnigsten machen
sollte.
[…]
Kannst du da mal ein Beispiel aufschreiben. Nur damit es mir
klarer wird. Das wäre super.
Das hängt wirklich sehr stark von der Anwendung ab. Code posten hat da jetzt kaum Sinn (da wo ich grad dran arbeite hat sowohl die allgemeine Exception-Klasse als auch die allgemeine Fehlerbehandlung jeweils einige Tausend Codezeilen), ich kann dir ein paar konkrete Beispiele bringen, aber wie gesagt, sehr anwendungsspezifisch. Es handelt sich um einen sogenannten Adapter, ein Stück Software das die Schnittstelle einer Middelware zu einer Applikation darstellt.
Die allgemeine Exception-Klasse bietet u. a. folgende Funktionen:
*) Kapseln einer eventuell vorhandenen, ursprünglichen Exception. Fehlermeldung und Stacktrace der ursprünglichen Exception werden in Fehlermeldung und Stacktrace der allgemeinen Exception eingebettet.
*) Speichern von Folge-Exceptions, also Fehler die während der Fehlerbehandlung auftreten (z. B. beim Datenbank-Rollback). Auch die werden dann wiederum automatisch in die Fehlermeldung integriert.
*) Schwere/Art des Fehlers. Das wird dann von der allgemeinen Fehlerbehandlung wieder abgefragt. Fehlerklassen sind z. B.:
-) Recoverable: Fehler kann durch erneuten, späteren Versuch behoben werden, z. B. Datenbank down.
-) Non-recoverable: Fehler kann nicht durch erneuten Versuch behoben werden, z. B. Integritätsverletzung in der Datenbank
-) Start/Stop: Fehler die beim Starten/Beenden der Applikation auftreten
-) Internal: Fehler die den Erfolg einer Aktion nicht mehr beeinflussen.
Diese Klassifikation wird an Ort und Stelle an der der Fehler auftritt vorgenommen, um beim Datenbank-Beispiel zu bleiben, über den JDBC-Fehlercode oder SQL-State.
Die eigentliche Fehlerbehandlung muss mindestens zweistufig erfolgen, einmal an Ort und Stelle und einmal in der allgemeinen Fehlerbehandlung.
An Ort und Stelle wäre z. B. das schließen der aktuellen Datenbank-Verbindung, sowas kann die allgemeine Fehlerbehandlung natürlich nicht machen/wissen.
Das kann man auch mehrstufig machen. Z. b. habe ich eine allgemeine Routine um Datenbankfehler zu verarbeiten. Die schaut sich die SQLException an, klassifiziert den Fehler (also die Schwere des Fehlers), rollt Transaktionen zurück und generiert aus der SQLException und eventuellen dazugehörigen Warnings eine Fehlermeldung. Resultat ist dann eine Instanz der allgemeinen Exception-Klasse, die wird dann geworfen und von der allgemeinen Fehlerbehandlung verarbeitet.
Die allgemeine Fehlerbehandlung tut dann z. B. den Fehler einmal in Richtung Logs schreiben, das geht in ein File und an ein Systemmanagement-Tool.
Dann wird je nach Recoverable/Non-Recoverable verfahren. Im ersten Fall wird die Aktion später nochmal versucht, im zweiten Fall werden die eingehenden Daten die den Fehler ausgelöst haben wieder woanders gespeichert, die kann man dann wieder bearbeiten, eventuell den Fehler korrigieren und dann die Aktion nochmal auslösen.
Dann gibt es natürlich auch noch Spezialfälle. Z. b. ein OutOfMemoryError. Den bekommt auch die allgemeine Fehlerbehandlung, nur hat es da keinen Sinn grossartig was zu machen, da schaue ich nur, dass ich den Fehler ins Logfile bringe und die Applikation geordnet runterfahre.
Puh, das ist jetzt irgendwie ein langes Mail geworden. Ich hoffe es gibt dir ein paar Anstösse. :o)
Wenn du weitere Fragen hast, frag einfach. Oder poste mal etwas über deinen konkreten Anwendungsfall, dann finden sich sicher auch ein paar Ideen dazu. 
Grüße, Robert