Window: Methode reportError()
Die reportError() Methode der Window Schnittstelle kann verwendet werden, um Fehler in der Konsole oder in den Ereignis-Handlern globaler Bereiche zu melden, indem ein nicht abgefangener JavaScript-Ausnahmefehler simuliert wird.
Dieses Feature ist in erster Linie für Bibliotheken gedacht, die eigene Ereignissteuerung oder Rückrufmanipulation implementieren. Bibliotheken können dieses Feature nutzen, um Fehler in Rückruf-Code abzufangen und sie an die oberste Ebene der Verarbeitung weiterzugeben. Dies stellt sicher, dass eine Ausnahme in einem Rückruf nicht verhindert, dass andere behandelt werden, während gleichzeitig sichergestellt wird, dass die Stack-Trace-Informationen auf höchster Ebene leicht zugänglich bleiben, um sie zu debuggen.
Syntax
reportError(throwable)
Parameter
Rückgabewert
Keiner (undefined).
Ausnahmen
TypeError-
Die Methode wird ohne ein Fehlerargument aufgerufen.
Beispiele
>Feature-Erkennung
Feature-Test für die Methode mit:
if (typeof window.reportError === "function") {
// function is defined
}
Telemetrie
reportError() ermöglicht das Melden von asynchronen Fehlern ähnlich wie bei integrierten Fehlern. Die Aggregation aller Fehler an einem einzigen Punkt erleichtert die Sammlung von Telemetriedaten über Fehler, die in einer Anwendung auftreten.
Zum Beispiel könnte eine Webanwendung einen globalen error Ereignis-Listener einrichten, um alle nicht abgefangenen Fehler zu sammeln und sie zwecks Analyse an einen Server zu senden, beispielsweise unter Verwendung 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 bei synchroner <script>-Ausführung, setTimeout-Rückrufen, Ereignis-Handlern, asynchronen Promise-Rückrufen usw. lauschen. Bibliotheken und Anwendungen können reportError() nutzen, um ihre eigenen Fehler an diesen Listener zu übermitteln, wodurch sichergestellt wird, 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() anstelle des unbemerkten Auftretens des Fehlers wird die nachfolgende Code-Ausführung nicht unterbrochen, während dennoch sichergestellt wird, dass der Fehler protokolliert und analysiert werden kann. Diese Funktion kann beispielsweise in einem Test-Runner aufgerufen werden, ohne dass ein zusätzliches try...catch-Handling erforderlich ist.
Spezifikationen
| Spezifikation |
|---|
| HTML> # runtime-script-errors> |
Browser-Kompatibilität
Siehe auch
WindowWorkerGlobalScope.reportError()Window:errorEreignisWorkerGlobalScope:errorEreignisHTMLElement:errorEreignis