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

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

一个新手
一个新手original
2017-10-13 09:21:232138parcourir

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!'));
}

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 => ···);


>

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


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 => ···);


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);


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) => ···);

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();



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!

Déclaration:
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