Maison > interface Web > js tutoriel > Détecter les erreurs de promesse non gérées

Détecter les erreurs de promesse non gérées

一个新手
Libérer: 2017-10-13 09:21:23
original
2207 Les gens l'ont consulté

Les erreurs

Unhandled Promise peuvent être détectées en écoutant l'événement unhandledrejection.

Afin de garantir la lisibilité, cet article utilise une traduction libre plutôt qu'une traduction littérale, et le code source a été largement modifié. De plus, les droits d'auteur de cet article appartiennent à l'auteur original et la traduction est uniquement destinée à l'apprentissage.

Lors de l'écriture de code asynchrone à l'aide de Promise, utilisez reject pour gérer les erreurs. Parfois, les développeurs l’ignorent généralement, ce qui entraîne la non-gestion de certaines erreurs. Par exemple :

function main() {
asyncFunc()
.then(···)
.then(() => console.log('Done!'));
}
Copier après la connexion

Puisque la méthode catch n'est pas utilisée pour détecter l'erreur, lorsque la fonction asyncFunc() reject, l'erreur générée est Non traitée.

Ce blog expliquera comment détecter les erreurs Promise non gérées dans les navigateurs et Node.js respectivement.

Erreurs de promesse non gérées dans les navigateurs

Certains navigateurs (tels que Chrome) sont capables de détecter les erreurs de promesse non gérées.

unhandledrejection

Écoutez l'événement unhandledrejection pour capturer les erreurs de promesse non gérées :

window.addEventListener(
'unhandledrejection', event => ···);
Copier après la connexion


>

window.addEventListener('unhandledrejection', event =>
{
console.log(event.reason); // 打印"Hello, Fundebug!"
});
 
function foo()
{
Promise.reject('Hello, Fundebug!');
}
 
foo();
Copier après la connexion


Cet événement estPromiseRejectionEvent instance, qui possède les 2 propriétés les plus importantes :

  • promise : rejeter la promesse

  • reason : valeur de rejet de la promesse

Exemple de code :

window.addEventListener(
'rejectionhandled', event => ···);
Copier après la connexion


window.addEventListener('unhandledrejection', event =>
{
console.log(event.reason); // 打印"Hello, Fundebug!"
});
 
window.addEventListener('rejectionhandled', event =>
{
console.log('rejection handled'); // 1秒后打印"rejection handled"
});
 
 
function foo()
{
return Promise.reject('Hello, Fundebug!');
}
 
var r = foo();
 
setTimeout(() =>
{
r.catch(e =>{});
}, 1000);
Copier après la connexion


Le plug-in de surveillance des erreurs JavaScript de Fundebug écoute l'événement unhandledrejection, de sorte que les erreurs de promesse non gérées peuvent être attrapé automatiquement.

rejectionhandled

Lorsqu'une erreur de promesse n'est pas gérée initialement, mais est gérée ultérieurement, l'événement rejectionhandled sera déclenché :

process.on(
'unhandledRejection', (reason, promise) => ···);
Copier après la connexion

Ce event est une instance de PromiseRejectionEvent.

Exemple de code :

process.on('unhandledRejection', reason =>
{
console.log(reason); // 打印"Hello, Fundebug!"
});
 
function foo()
{
Promise.reject('Hello, Fundebug!');
}
 
foo();
Copier après la connexion



Erreur de promesse non gérée dans Node.js

Écoute L'événement unhandledRejection peut capturer les erreurs de promesse non gérées :

Exemple de code :

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal