Exceptionhandling
Konzept
Im Falle einer Exception wird einem menschlichen Benutzer der gefilterte Stacktrace angezeigt. Dieser umfasst ausschliesslich Exceptions, die von der Klasse ElegoException abgeleitet sind. Zusätzlich wird die Id der zugehörigen BusinessTransaction angezeigt. Andere Exceptions (z. B. System.Exception, RuntimeException usw.) werden aus Sicherheitsgründen nicht angezeigt, da sie potenziell sensible Informationen über verwendete Technologien oder Inhalte preisgeben könnten.
Innerhalb der BusinessTransaction wird der vollständige Meldungsstack protokolliert. Ein berechtigter Benutzer gelangt über die BusinessTransaction auf die vollständige Fehlermeldung.
Im Falle einer Exception werden einem menschlichen Benutzer der Exception-Stack, gefiltert auf alle von ElegoExeption abgeleiteten Exceptions, und die Id der BusinessTransaction angezeigt. Weitere Exceptions (z.B. System.Exception, RuntimeException, ...) werden aus Sicherheitsgründen nicht angezeigt, da sie oft Informationen über verwendete Technologien und sensible Inhalte Preis geben.
In der BusinessTransaction wird der gesamte Meldungsstack geloggt. so kann ein berechtigter Benutzer über die IBusinessTracsaction die kompette Fehlermeldung abrufen.
Umsetzung
Folgende Exception-Klassen sind in elego realisiert:
classDiagram
ElegoException <|-- ElegoTechnicalException
ElegoException <|-- ElegoBusinessException
Beschreibung der Exception-Klassen
| Exception-Klasse | Verwendnung |
|---|---|
| ElegoException | Basisklasse für Elego Exceptions. Sollte nicht direkt verwendet werden. Diese Klasse leitet von der Exception-Klasse ab und ist serialisierbar. |
| ElegoTechnicalException | Exception Klasse für fachliche Fehler basierend auf dem elego Framework. Diese Exception kann direkt "geworfen" werfen oder als Basisklasse für weitere Exceptions verwendet werden. Sie leitet von der ElegoException-Klasse ab. |
| ElegoBusinessException | Exception Klasse für technische Fehler basierend auf dem elego Framework. Diese Exception kann direkt "geworfen" werfen oder als Basisklasse für weitere Exceptions verwendet werden. Sie leitet von der ElegoException-Klasse ab. Technische Fehler müssen nicht übersetzt werden. |
Mit folgender Syntax kann auf eine Sprachressource der Gruppe Exception verwiesen werden:
#[Key].[Type]#[Meldung zur besseren Verständlichkeit im Code]
z.B. #105.EfbBase#Activity darf nicht ausgeführt werden. Grund: {0}
Anwendung
Beispiel einer ElegoBusinessException mit Verweis auf eine Sprachressource
if (!checkResult.CanExecute)
{
throw new ElegoBusinessException("#105.EfbBase#Activity darf nicht ausgeführt werden. Grund: {0}", checkResult.Reason);
}
Die Sprachressource ist wie folgt definiert.
| Group | Type | Key | de |
|---|---|---|---|
| Exception | EfbBase | 105 | Activity darf nicht ausgeführt werden. Grund: {0} |