Wie gehe ich mit Ausnahmen um?

8

Angular hat einen großartigen $ exceptionHandler . Gibt es so etwas für react.js?

Ich möchte meine Fehler bei einer externen API protokollieren. Beispiele:

Eric 26.03.2015, 00:01
quelle

2 Antworten

15

Es gibt keine Magie wie in eckigen. Wenn ein nicht erfasster Fehler vorliegt, werden die Bereiche weitergeleitet, bis sie auf ein Fenster treffen, und dann wird ein Fehlerereignis ausgegeben - das gleiche Verhalten wie ein Fehler ohne Reaktion.

%Vor%

Wenn Sie die Cross-Browser-Unterstützung prüfen, aktualisieren Sie diese Antwort oder fügen Sie einen Kommentar mit Zitaten hinzu.

Anstatt es auf der Konsole zu protokollieren (was standardmäßig schon passiert), können Sie es an eine beliebige Stelle senden.

Im Gegensatz zu anderen Frameworks ist ein nicht erfasster Fehler immer ein Fehler in Ihrem Code. Es sollte nie passieren.

Sie müssen möglicherweise auch spezielle Verhelfsfehler behandeln, indem Sie explizit ein .catch(reportError) am Ende der Ketten hinzufügen und prüfen, ob es sich um einen TypeError oder ReferenceError handelt.

    
FakeRainBrigand 26.03.2015, 00:32
quelle
0

While @ FakeRainBrigands Antwort gibt einen sehr guten Ausgangspunkt, um den Mechanismus des allgemeinen 'Unerhört Fehler' Berichtsmechanismus in Javascript zu verstehen. Ich glaube, dass die meisten Apps ihre JS Bundles mit CDNs hosten, wo Sie einfach nicht erfasste Fehler mit " window.addEventListener ('Fehler', Fn) "Mechanismus.

Beschränken Sie sich auf Crossorigin-Einschränkungen

Setzen Sie das Attribut crossorigin auf das Skript-Tag, damit Sie die Erfassung nicht erfasster Fehler genießen können mit dem Mechanismus "window.addEventListener ('error', fn)".

In Fällen, in denen Sie mit den Einstellungen für Korsagen nicht umgehen können

Reagieren 16 : bietet einen integrierten Fehlerbehandlungsmechanismus. Lesen Sie mehr über Fehlergrenzen in Reagieren hier

Reagiere 15 oder weniger : Nur durch Hinzufügen von try-catch-Blöcken um alle Rendern / Komponenten herum können Fehler aufgefangen werden. Glücklicherweise haben wir ein npm-Modul - react-guard , das genau das für uns tut, indem wir React patchen.

    
Nachiketha 09.03.2018 05:43
quelle