Nachrichten-Handler verwenden
Das Standardverhalten bei der Verarbeitung von Fehlernachrichten und anderen Nachrichten in der Vorbereitungs- und Ausführungszeit ist die Ausgabe der Nachrichten in der Systemfehlerausgabe (System.err). Bei nicht behebbaren Fehlern wird außerdem eine XProcessException ausgelöst. Tritt in der Vorbereitungszeit ein Fehler auf, versucht der Prozessor, die Vorbereitung fortzusetzen und alle Fehler zu signalisieren, bevor eine XProcessException generiert wird. Es wird kein ausführbares Objekt erzeugt. In der Laufzeit wird die Ausführung beim ersten Eintreten einer Fehlersituation gestoppt.
Vorgehensweise
- Einer der folgenden, im Interface XMessageHandler
definierten Aufzählungsausdrücke:
- Gibt an, dass die Fehlernachricht eine einfache Informationsnachricht ist und keinen Einfluss auf das
Ergebnis hat
Dieser Ausdruck wird auch für die XSLT-Nachrichtenanweisung verwendet, wenn die Auswertung des Attributs terminate den Wert "no" ergibt.
- Zeigt eine Warnung an
Der Prozessor kann nach einer Warnsituation eine Wiederherstellung durchführen. Das Ergebnis entspricht jedoch möglicherweise nicht den Erwartungen.
- Zeigt einen behebbaren Fehler an
Möglicherweise kann der Prozessor den Fehler insoweit beheben, dass weitere Fehler signalisiert werden können. Ein Ergebnis wird jedoch nicht erzeugt.
- Zeigt einen nicht behebbaren Fehler an
Der Prozessor kann diesen Fehler nicht beheben. Dieser Ausdruck wird auch für die XSLT-Nachrichtenanweisung verwendet, wenn die Auswertung des Attributs terminate den Wert "yes" ergibt.
- Zeigt an, dass die Nachricht von einem Aufruf der XPath-Funktion fn:trace generiert wurde
- Gibt an, dass die Fehlernachricht eine einfache Informationsnachricht ist und keinen Einfluss auf das
Ergebnis hat
- Fehlernachricht
- Quellenposition, z. B. eine XSourceLocation, sofern verfügbar
Für Fehler in der Ausführungszeit ist im Allgemeinen keine Quellenposition verfügbar.
- Ursprüngliche Ausnahme, die den Fehler ausgelöst hat, sofern verfügbar
Wenn beispielsweise das Eingabedokument ungültig ist, generiert der XML-Parser eine Ausnahme, die mit diesem Parameter an die Methode report übergeben wird.
- Elemente, die für den Parameter error-object der XPath-Funktion fn:error angegeben wurden
Die Implementierung von XMessageHandler kann die Fehlernachrichten und anderen Nachrichten wie gewünscht darstellen. Sie können beispielsweise in ein Protokoll geschrieben und nicht an die Systemfehlerausgabe (System.err) gesendet werden. Eine striktere Implementierung ist ebenfalls möglich, bei der die Kompilierung oder Ausführung bei jedem Fehler (einschließlich behebbarer Fehler) gestoppt und eine Ausnahme generiert wird. Da die Methode report keine throws-Klausel hat, muss die Ausnahme eine ungeprüfte Ausnahme sein. Die Implementierung kann auch festlegen, dass Informationsnachrichten und Warnungen ignoriert werden. Bei Registrierung eines XMessageHandler kann die Anwendung somit die Nachrichtenbehandlung ganz nach ihren Erfordernissen konfigurieren.
Wenn der registrierte Nachrichten-Handler bei einem nicht behebbaren Fehler keine Ausnahme generiert, löst der Prozessor eine XProcessException aus.