Es ist richtig, dass mit modernen Browsern praktisch alle in Ihrem Client-Code ausgelösten Fehlerobjekte abgefangen werden, wenn Sie window.onerror für Fehler einbinden, die ganz nach oben sprudeln, und jQuery-Ereignishandler für Ajax-Fehler hinzufügen. Wenn Sie einen Handler für window.onerror manuell einrichten, geschieht dies in modernen Browsern window.addEventListener('error', callback)
, während Sie in IE8 / 9 aufrufen müssen
window.attachEvent('onerror', callback)
.
Beachten Sie, dass Sie dann die Umgebung, in der diese Fehler behandelt werden, und den Grund dafür berücksichtigen sollten. Es ist eine Sache, so viele Fehler wie möglich mit ihren Stacktraces abzufangen, aber das Aufkommen moderner F12-Entwicklungstools löst diesen Anwendungsfall beim lokalen Implementieren und Debuggen. Haltepunkte usw. geben Ihnen mehr Daten als von den Handlern verfügbar sind, insbesondere für Fehler, die von Bibliotheken von Drittanbietern ausgelöst wurden, die aus CORS-Anforderungen geladen wurden. Sie müssen zusätzliche Schritte ausführen, um den Browser anzuweisen, diese Daten bereitzustellen.
Das Hauptproblem besteht darin, diese Daten in der Produktion bereitzustellen, da Ihre Benutzer garantiert eine weitaus größere Auswahl an Browsern und Versionen ausführen, als Sie möglicherweise testen können, und Ihre Website / App auf unerwartete Weise beschädigt wird, unabhängig davon, wie viel Qualitätssicherung Sie durchführen es.
Um dies zu handhaben, benötigen Sie einen Produktionsfehler-Tracker, der jeden in den Browsern Ihres Benutzers ausgelösten Fehler aufnimmt, wenn dieser Ihren Code verwendet, und ihn an einen Endpunkt sendet, an dem die Daten von Ihnen angezeigt und zur Behebung der auftretenden Fehler verwendet werden können . Bei Raygun (Haftungsausschluss: Ich arbeite bei Raygun) haben wir uns sehr bemüht, eine großartige Erfahrung dafür zu bieten, da es viele Fallstricke und Probleme gibt, die zu berücksichtigen sind, dass eine naive Implementierung fehlen wird.
Beispielsweise besteht die Möglichkeit, dass Sie Ihre JS-Assets bündeln und minimieren. Dies bedeutet, dass Fehler, die durch minimierten Code ausgelöst werden, Junk-Stacktraces mit beschädigten Variablennamen enthalten. Dazu benötigen Sie Ihr Build-Tool, um Quellkarten zu generieren (wir empfehlen UglifyJS2 für diesen Teil der Pipeline), und Ihren Fehler-Tracker, um diese zu akzeptieren und zu verarbeiten und die verstümmelten Stacktraces wieder in lesbare zu verwandeln. Raygun erledigt dies alles sofort und enthält einen API-Endpunkt, um Quellzuordnungen zu akzeptieren, die von Ihrem Erstellungsprozess generiert werden. Dies ist wichtig, da sie nicht öffentlich zugänglich gemacht werden müssen, da sonst jeder Ihren Code aufheben und seinen Zweck negieren kann.
Die raygun4js Client - Bibliothek kommt auch mit window.onerror
für modernen und Legacy - Browser sowie jQuery hakt out-of-the-Box, so dass diese einzurichten Sie nur hinzufügen müssen:
<script type="text/javascript" src="//cdn.raygun.io/raygun4js/raygun.min.js" </script>
<script>
Raygun.init('yourApiKey').attach();
</script>
Es gibt auch eine Reihe integrierter Funktionen, einschließlich der Möglichkeit, die Fehlernutzdaten vor dem Senden zu mutieren, Tags und benutzerdefinierte Daten hinzuzufügen, Metadaten für den Benutzer, der den Fehler gesehen hat. Es macht es auch einfacher, gute Stapelspuren aus den oben genannten CORS-Skripten von Drittanbietern zu erhalten, wodurch der gefürchtete 'Skriptfehler' (der keine Fehlermeldung und keine Stapelspur enthält) behoben wird.
Ein wichtigeres Problem ist, dass Ihre Website aufgrund des großen Publikums im Web viele tausend doppelte Instanzen jedes Fehlers generiert. Ein Fehlerverfolgungsdienst wie Raygun verfügt über intelligente Funktionen, um diese in Fehlergruppen zusammenzufassen, damit Sie nicht in einer Flut von Benachrichtigungen ertrinken und jeden tatsächlichen Fehler zur Behebung anzeigen können.