Heim >Web-Frontend >js-Tutorial >Nicht behandelte Promise-Fehler abfangen
Unhandled Promise-Fehler können durch Abhören des Ereignisses unhandledrejection abgefangen werden.
Um die Lesbarkeit zu gewährleisten, verwendet dieser Artikel eine freie Übersetzung anstelle einer wörtlichen Übersetzung und der Quellcode wurde umfassend geändert. Darüber hinaus liegt das Urheberrecht dieses Artikels beim ursprünglichen Autor und die Übersetzung dient nur zum Lernen.
Wenn Sie asynchronen Code mit Promise schreiben, verwenden Sie reject, um Fehler zu behandeln. Manchmal ignorieren Entwickler dies, was dazu führt, dass einige Fehler nicht behandelt werden. Zum Beispiel:
function main() { asyncFunc() .then(···) .then(() => console.log('Done!')); } |
Da die Methode catch nicht zum Abfangen des Fehlers verwendet wird, wenn die Funktion asyncFunc() reject verwendet wird, Der ausgegebene Fehler lautet Nicht verarbeitet.
In diesem Blog erfahren Sie, wie Sie nicht behandelte Promise-Fehler in Browsern bzw. Node.js abfangen.
Einige Browser (z. B. Chrome) sind in der Lage, nicht behandelte Promise-Fehler abzufangen.
Hören Sie sich das Ereignis unhandledrejection an, um nicht behandelte Promise-Fehler zu erfassen:
window.addEventListener( 'unhandledrejection', event => ···);
|
Dieses Ereignis istPromiseRejectionEvent Instanz, die die 2 wichtigsten Eigenschaften hat:
promise
: Ablehnungsversprechen
reason
: Der Ablehnungswert von Versprechen
Beispielcode:
window.addEventListener( 'rejectionhandled', event => ···);
|
Das JavaScript-Fehlerüberwachungs-Plug-in von Fundebug überwacht das Ereignis unhandledrejection, also Unhandled Promise Fehler können automatisch erkannt werden.
Wenn ein Promise-Fehler zunächst nicht, aber später behandelt wird, wird das Ereignis rejectionhandled ausgelöst:
process.on( 'unhandledRejection', (reason, promise) => ···); |
Dies event ist eine Instanz von PromiseRejectionEvent.
Beispielcode:
process.on('unhandledRejection', reason => { console.log(reason); // 打印"Hello, Fundebug!" }); function foo() { Promise.reject('Hello, Fundebug!'); } foo(); |
Listening Das Ereignis unhandledRejection kann nicht behandelte Promise-Fehler erfassen:
Beispielcode:
Das obige ist der detaillierte Inhalt vonNicht behandelte Promise-Fehler abfangen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!