Exception Handling und Logging

+ andere TechDocs
+ Coding Conventions
+ Log4j
+




Inhalt

  1. Vorschläge zum Exception Handling
  2. Vorschläge zum Logging



Vorschläge zum Exception Handling

Optimal wäre, wenn der Aufrufer aus der Exception programmatisch folgende Fragen beantwortet bekäme:

Es folgen Vorschläge zur Annäherung an dieses Ziel. Dabei beziehen sich allerdings viele Vorschläge auf eine Java-EE-Application-Server-Umgebung und müssen für das eigene Projekt umdefiniert werden.

Das gewählte Exception-Handling- und Logging-Konzept sollte schriftlich dokumentiert werden und allen Projektbeteiligten bekannt sein.


Serverseitig 'checked Exception' versus 'unchecked RuntimeException'

Clientseitig 'checked Exception' versus 'unchecked RuntimeException'

Informationsgehalt der Exceptions

'NullPointerException'

Besonderheiten bei SQL und ORM

Test



Vorschläge zum Logging

Allgemeine Vorschläge

Logging (z.B. in eine .log-Datei oder in eine SQL-Datenbank) ist eine große Hilfe sowohl während der Entwicklungszeit als auch später zur Fehlersuche beim Kunden.

Logger erlauben das selektive Ein- und Ausschalten bestimmter oder aller Log-Meldungen zur Laufzeit über eine einfache textbasierte Steuerdatei.

Bewährt haben sich folgende Vorschläge:


Logging-Level

Beim Logging wird den Meldungen ein Logging-Level mitgegeben. Diese Level sollten möglichst standardisiert verwendet werden, um die Auswertung der Meldungen zu vereinfachen.

Vorschläge für entsprechende Vorgaben für serverseitiges Logging können sein:

Logging-
Level
AnwendungBeispiele
FATAL Schwerwiegende Fehler, von denen sich das System oder die Anwendung nicht erholen kann und beendet werden muss ("Unrecoverable Error") Sollte eigentlich nur vom System (Application Server) generiert werden, z.B. "OutOfMemory" in kritischen Softwareteilen
ERROR Fehlermeldungen, auf die der Operator oder Administrator reagieren muss Fehler in der Netzwerkverbindung, Datenbank-Connection oder aus der LDAP-Benutzerverwaltung
WARN Meldungen, die vom Operator an die Softwareentwicklungsabteilung übermittelt werden müssen und dort analysiert werden müssen, die aber den Betrieb wahrscheinlich nicht beeinträchtigen Meldungen zu unerwarteten oder inkonsistenten Datenbankinhalten, "IllegalArgumentException", "NullPointerException"
INFO Hinweise Für den laufenden Betrieb möglicherweise interessante Meldungen, zum Beispiel zur Auslastung und Performance
DEBUG Nur für den Softwareentwickler interessante Meldungen Diese Meldungen sind im laufenden Betrieb ausgeschaltet, können aber bei Bedarf zur Laufzeit selektiv "packageweise" eingeschaltet werden, um bestimmte Fehlerursachen aufzuspüren

Programmierung

Das Einfügen von Logging im Java-Sourcecode gestaltet sich sehr einfach, zum Beispiel so:




Weitere Themen: andere TechDocs | Coding Conventions | Log4j
© 2002-2007 Torsten Horn, Aachen