Ausnahmen für Maßnahmen

Zurück 1 2 3 4 Page 3 Weiter Seite 3 von 4

Beispielausnahmesatz

In Abbildung 1 sehen Sie vier Arten von Ausnahmen, mit denen vier Arten von Aktionen ausgeführt werden können:

  1. BusinessException : Eine außergewöhnliche Bedingung ist aufgetreten. Diese Bedingung war vorgesehen und kann von der aufrufenden Methode auf sofortige Maßnahmen überprüft werden.
  2. ParameterException : Die eingegebenen Daten ermöglichen keine ordnungsgemäße Verarbeitung. Der Benutzer muss aufgefordert werden, gültige Daten erneut einzugeben oder die Bedingungen zu ändern, unter denen die Verarbeitung erfolgt.
  3. TechnicalException : Ein technisches Problem wie eine ungültige SQL-Anweisung ist aufgetreten. Die angeforderte Operation kann nicht erfüllt werden. Der Benutzer sollte sich zur Untersuchung an den Helpdesk wenden oder einen anderen Dienst ausprobieren. Die Verwendung der Anwendung durch andere Benutzer ist nicht betroffen.
  4. CriticalTechnicalException : Ein technisches Problem wie ein Datenbankabsturz ist aufgetreten. Unter diesen Bedingungen ist die gesamte Anwendung unbrauchbar. Der Benutzer sollte aufgefordert werden, es später erneut zu versuchen. Andere Benutzer sollten die Anwendung erst verwenden, wenn sie repariert wurde.

Diese Ausnahmen sind nur ein Beispiel. Viele andere Ausnahmesätze könnten ähnlich definiert werden. Zum Beispiel TechnicalExceptionund CriticalTechnicalExceptionkönnte als einzelne Ausnahmeklasse mit einem booleschen severityAttribut entworfen werden. Wichtig ist, sich auf die Art der Maßnahmen zu konzentrieren, die ergriffen werden sollten, und nicht auf das Problem, das die Ausnahme ausgelöst hat.

Ausnahmeprotokollierung

Obwohl sich die Ausnahmesemantik auf die zu ergreifenden Maßnahmen konzentriert, ist auch das aufgeworfene Problem wichtig. Das Entwicklungsteam könnte diese Informationen beispielsweise zum Debuggen des Codes verwenden. In meinem Ausnahmedesign finden Sie Informationen zur Ursache der Ausnahme in der Fehlerprotokolldatei der Anwendung. Wenn ein gutes Protokollierungsframework vorhanden ist, sollte es ausreichen, Informationen über das Problem aus der Ausnahmemeldung und dem Stack-Trace zu protokollieren.

Das einzige Problem bleibt, wie die Ausnahme so gestaltet wird, dass diese Informationen leicht abgerufen werden können. Eine Lösung besteht darin, die Ausnahme mit einem ID- Attribut zu versehen, das die Art des vorliegenden Problems darstellt. Wenn das Problem eine eigene Ausnahme ausgelöst hat, kann diese Ausnahme in die Anwendungsausnahme verschachtelt werden. Zum Zeitpunkt des Abfangens können die ursprüngliche Nachricht und die Stapelverfolgung aus der verschachtelten Ausnahme abgerufen werden. Das ID- Attribut und die Ausnahmeverschachtelung sind zwei Möglichkeiten, um problembezogene Informationen in die Ausnahme selbst aufzunehmen.

Gestaltung des Ablaufs von Ausnahmen

Nachdem Sie die Ausnahmen selbst entworfen haben, müssen Sie im nächsten Schritt darüber nachdenken, wie sie durch Ihre Anwendung fließen. Eine Standard-JEE-Anwendungsarchitektur besteht hauptsächlich aus vier Paketen: Präsentation, Geschäft, Integration und Persistenz. Ausnahmen werden normalerweise von den Integrations- und Persistenzpaketen ausgelöst. Im Business Package fangen die inneren Laufzeitschichten geprüfte Ausnahmen so schnell wie möglich ab, während die äußeren Schichten die Laufzeitausnahmen abfangen und entsprechend ihrer Klasse geeignete Maßnahmen ergreifen. Sie können auch einige aktivierte Ausnahmen innerhalb des Business-Pakets auslösen. In diesem Schema besteht die Verantwortung der Integrations- und Persistenzpakete sowie der inneren Schicht des Geschäftspakets darin, Laufzeitausnahmen in Aktionen umzuwandeln.Eine typische JEE-Anwendungsarchitektur dieser Art ist in Abbildung 2 dargestellt.

Der Pfad einer Ausnahme, die beispielsweise aus dem Persistenzpaket ausgelöst wird, hängt davon ab, wo das Problem behoben werden kann. Wenn die aufrufende Methode das Problem beheben kann, wird die Ausnahme sofort abgefangen, die entsprechende Aktion wird ausgeführt und das Geschäft läuft normal weiter. Wenn das Problem nicht behoben werden kann, wird die Ausnahme in eine Laufzeitausnahme verschachtelt und stillschweigend über die Zwischenschichten des Geschäftspakets an die oberen Schichten der Anwendung weitergeleitet. In diesen Schichten, normalerweise von einer Art Anwendungscontroller, wird die Laufzeitausnahme abgefangen, die entsprechende Aktion ausgeführt und die Präsentationsschicht zeigt dem Benutzer die entsprechende Fehlermeldung an. Das sofortige Abfangen überprüfter Ausnahmen und das späte Abfangen von Laufzeitausnahmen sind die beiden Hauptszenarien bei dieser Art von Ausnahmedesign, wie in Abbildung 3 dargestellt.