Error Handling
Fehlerbehandlung ist ein entscheidender Aspekt bei der Entwicklung robuster Webanwendungen. In webforJ ist die Fehlerbehandlung so gestaltet, dass sie flexibel und anpassbar ist, wodurch Entwickler Ausnahmen auf eine Weise behandeln können, die am besten zu den Bedürfnissen ihrer Anwendung passt.
Übersicht
In webforJ dreht sich die Fehlerbehandlung um das ErrorHandler
-Interface. Dieses Interface ermöglicht es Entwicklern zu definieren, wie ihre Anwendung reagieren soll, wenn während der Ausführung Ausnahmen auftreten. Standardmäßig bietet webforJ einen GlobalErrorHandler
, der alle Ausnahmen auf generische Weise behandelt. Entwickler können jedoch benutzerdefinierte Fehlerhandler für spezifische Ausnahmen erstellen, um maßgeschneiderte Antworten zu bieten.
Entdecken und Verwenden von Fehlerhandlern
webforJ verwendet das Service Provider Interface (SPI) von Java, um Fehlerhandler zu entdecken und zu laden.
Entdeckungsprozess
- Service-Registrierung: Fehlerhandler werden über den
META-INF/services
-Mechanismus registriert. - Service-Laden: Beim Start der Anwendung lädt webforJ alle Klassen, die in
META-INF/services/com.webforj.error.ErrorHandler
aufgeführt sind. - Fehlerbehandlung: Wenn eine Ausnahme auftritt, überprüft webforJ, ob ein Fehlerhandler für diese spezifische Ausnahme existiert.
Handler-Auswahl
- Wenn ein spezifischer Handler für die Ausnahme existiert, wird dieser verwendet.
- Wenn kein spezifischer Handler gefunden wird, aber ein benutzerdefinierter globaler Fehlerhandler
WebforjGlobalErrorHandler
definiert ist, wird dieser verwendet. - Wenn keiner gefunden wird, wird der Standard-
GlobalErrorHandler
verwendet.
Das ErrorHandler
-Interface
Das ErrorHandler
-Interface ist dafür konzipiert, Fehler zu behandeln, die während der Ausführung einer webforJ-Anwendung auftreten. Anwendungen, die spezifische Ausnahmen verwalten möchten, sollten dieses Interface implementieren.
Methoden
onError(Throwable throwable, boolean debug)
: Wird aufgerufen, wenn ein Fehler auftritt. Diese Methode sollte die Logik zur Behandlung der Ausnahme enthalten.showErrorPage(String title, String content)
: Eine Standardmethode, die die Fehlerseite mit dem angegebenen Titel und Inhalt anzeigt.
Namenskonvention
Die implementierende Klasse muss nach der Ausnahme benannt sein, die sie behandelt, mit dem Suffix ErrorHandler
. Zum Beispiel sollte die Klasse zur Behandlung von NullPointerException
NullPointerExceptionErrorHandler
genannt werden.
Registrierung
Der benutzerdefinierte Fehlerhandler muss in der Datei META-INF/services/com.webforj.error.ErrorHandler
registriert werden, damit webforJ ihn entdecken und nutzen kann.
Implementierung eines benutzerdefinierten Fehlerhandlers
Die folgenden Schritte beschreiben die Implementierung eines benutzerdefinierten Fehlerhandlers für eine spezifische Ausnahme:
Schritt 1: Erstellen Sie die Fehlerhandler-Klasse
Erstellen Sie eine neue Klasse, die das ErrorHandler
-Interface implementiert und nach der Ausnahme benannt ist, die sie behandelt.
package com.example.error;
import com.webforj.error.ErrorHandler;
public class NullPointerExceptionErrorHandler implements ErrorHandler {
@Override
public void onError(Throwable throwable, boolean debug) {
// Benutzerdefinierte Behandlungslogik für NullPointerException
String title = "Null Pointer Exception";
String content = "Ein Nullwert wurde dort gefunden, wo ein Objekt erforderlich ist.";
showErrorPage(title, content);
}
}
showErrorPage()
-MethodeDie Methode showErrorPage
ist eine Hilfsmethode, die die webforJ-API nutzt, um den bereitgestellten HTML-Inhalt und den Seitentitel an den Browser zu senden und eine Fehlerseite anzuzeigen. Wenn eine Ausnahme auftritt und die Anwendung nicht in der Lage ist, sich zu erholen, wird es unmöglich, webforJ-Komponenten zu verwenden, um eine benutzerdefinierte Fehlerseite zu erstellen. Die Page
-API bleibt jedoch zugänglich, sodass der Entwickler umleiten oder eine Fehlerseite als letzten Versuch anzeigen kann.
Schritt 2: Registrieren Sie den Fehlerhandler
Erstellen Sie eine Datei mit dem Namen com.webforj.error.ErrorHandler
im Verzeichnis META-INF/services
Ihrer Anwendung. Fügen Sie den vollständig qualifizierten Namen Ihrer Fehlerhandler-Klasse zu dieser Datei hinzu.
Datei: META-INF/services/com.webforj.error.ErrorHandler
com.example.error.NullPointerExceptionErrorHandler
Jetzt, wann immer eine NullPointerException
ausgelöst wird, wählt webforJ Ihren registrierten Handler aus und führt dessen Logik zur Fehlerbehandlung aus.
Verwendung von AutoService
, um die Registrierung zu vereinfachen
Es ist für Entwickler einfach, zu vergessen, Servicebeschreibungen zu aktualisieren oder korrekt anzugeben. Durch die Verwendung von Googles AutoService
können Sie die Generierung der Datei META-INF/services/com.webforj.error.ErrorHandler
automatisieren. Alles, was Sie tun müssen, ist, den Fehlerhandler mit der AutoService
-Annotation zu kennzeichnen. Sie können mehr über AutoService hier erfahren.
@AutoService(ErrorHandler.class)
public class NullPointerExceptionErrorHandler implements ErrorHandler {
@Override
public void onError(Throwable throwable, boolean debug) {
// Benutzerdefinierte Behandlungslogik für NullPointerException
String title = "Null Pointer Exception";
String content = "Ein Nullwert wurde dort gefunden, wo ein Objekt erforderlich ist.";
showErrorPage(title, content);
}
}
Die GlobalErrorHandler
-Klasse
Der GlobalErrorHandler
ist der standardmäßige Fehlerhandler, der von webforJ bereitgestellt wird. Er implementiert das ErrorHandler
-Interface und bietet eine generische Fehlerbehandlung.
Verhalten
- Protokollierung: Fehler werden sowohl in den Server- als auch in den Browserkonsolen protokolliert.
- Fehlerseitenanzeige: Abhängig vom Debug-Modus zeigt die Fehlerseite den Stacktrace oder eine generische Fehlermeldung an.
Definieren eines benutzerdefinierten globalen Fehlerhandlers
Um einen globalen Fehlerhandler zu definieren, müssen Sie einen neuen Fehlerhandler mit dem Namen WebforjGlobalErrorHandler
erstellen. Folgen Sie dann den Schritten zur Registrierung von Fehlerhandlern, wie oben erklärt. In diesem Fall sucht webforJ zunächst nach benutzerdefinierten Fehlerhandlern, um Ausnahmen zu verwalten. Wenn keine gefunden werden, fällt webforJ auf den benutzerdefinierten globalen Fehlerhandler zurück.
Wenn mehrere WebforjGlobalErrorHandler
registriert sind, wählt webforJ den ersten aus.