Window: reportError() Methode
Die reportError() Methode der Window-Schnittstelle kann verwendet werden, um Fehler in der Konsole oder in den Ereignishandlern globaler Gültigkeitsbereiche zu melden, indem ein nicht abgefangener JavaScript-Fehler simuliert wird.
Dieses Feature ist in erster Linie für Bibliotheken gedacht, die benutzerdefinierte Ereignis-Dispatching- oder Callback-Manipulationen durchführen. Bibliotheken können dieses Feature verwenden, um Fehler im Callback-Code abzufangen und sie erneut an den übergeordneten Handler weiterzuleiten. Dies stellt sicher, dass eine Ausnahme in einem Callback keine anderen daran hindert, behandelt zu werden, während gleichzeitig sichergestellt wird, dass Stack-Trace-Informationen auf oberster Ebene leicht verfügbar sind, um Fehler zu beheben.
Syntax
reportError(throwable)
Parameter
Rückgabewert
Keiner (undefined).
Ausnahmen
TypeError-
Die Methode wird ohne Argument aufgerufen, das einen Fehler darstellt.
Beispiele
>Feature-Erkennung
Feature-Test für die Methode unter Verwendung von:
if (typeof window.reportError === "function") {
// function is defined
}
Telemetrie
reportError() ermöglicht es, asynchrone Fehler genauso zu melden wie eingebaute Fehler. Das Sammeln aller Fehler an einem einzigen Punkt erleichtert es, Telemetriedaten über auftretende Fehler in einer Anwendung zu erfassen.
Zum Beispiel könnte eine Webanwendung einen globalen error-Ereignislistener einrichten, um alle nicht abgefangenen Fehler zu sammeln und zur Analyse an einen Server zu senden, wie z.B. durch die Nutzung von Sentry:
window.addEventListener("error", (event) => {
event.preventDefault(); // Prevent the default logging to console
Sentry.captureException(event.error);
console.error("Error encountered:", event.error);
showToastNotification("An error occurred. Our team has been notified.");
});
Standardmäßig kann dieser Listener für nicht abgefangene Ausnahmen lauschen, die in synchroner <script>-Ausführung, setTimeout-Callbacks, Ereignishandlern, asynchronen Promise-Callbacks usw. geworfen werden. Bibliotheken und Anwendungen können reportError() verwenden, um ihre eigenen Fehler an diesen Listener zu übermitteln und sicherzustellen, dass alle Fehler auf konsistente Weise erfasst werden.
function fetchUser(userId) {
return fetch(`/api/users?id=${encodeURIComponent(userId)}`)
.then((response) => {
if (!response.ok) {
throw new Error(`Failed to fetch user with ID ${userId}`);
}
return response.json();
})
.catch((error) => {
// Report the error to the global error handler
window.reportError(error);
});
}
Durch die Verwendung von reportError() anstatt den Fehler nicht abgefangen zu lassen, wird die nachfolgende Codeausführung nicht unterbrochen, während gleichzeitig sichergestellt wird, dass der Fehler protokolliert und analysiert werden kann. Diese Funktion kann beispielsweise in einem Test-Runner ohne zusätzliche try...catch-Handhabung aufgerufen werden.
Spezifikationen
| Specification |
|---|
| HTML> # runtime-script-errors> |
Browser-Kompatibilität
Siehe auch
WindowWorkerGlobalScope.reportError()Window:errorEreignisWorkerGlobalScope:errorEreignisHTMLElement:errorEreignis