Skip to content

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
Hold "Alt" / "Option" to enable pan & zoom

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}