Gestion des exceptions asynchrones avec les promesses Bluebird
Q : Comment gérer les exceptions non gérées dans les rappels asynchrones avec les promesses Bluebird ?
Les promesses Bluebird n'attrapent pas intrinsèquement les exceptions lancées par les rappels asynchrones, contrairement à domaines.
A : utilisez les constructeurs de promesse ou les fermetures then() pour gérer les exceptions
Pour intercepter les exceptions dans les rappels asynchrones, enveloppez le rappel dans un constructeur de promesse ou alors( ) fermeture :
function getPromise(){
return new Promise(function(done, reject){
setTimeout(function(){
throw new Error("AJAJAJA");
}, 500);
}).then(function() {
console.log("hihihihi");
throw new Error("Oh no!");
});
}
Évitez de lancer des rappels asynchrones personnalisés
Ne lancez jamais d'exceptions directement dans les rappels asynchrones personnalisés (en dehors des rappels de promesse). Au lieu de cela, rejetez la promesse environnante :
function getPromise(){
return new Promise(function(done, reject){
setTimeout(done, 500);
}).then(function() {
console.log("hihihihi");
reject(new Error("Oh no!"));
});
}
Exemple
Utilisation d'un constructeur de promesse :
var p = getPromise();
p.then(function(){
console.log("Yay");
}).error(function(e){
console.log("Rejected",e);
}).catch(Error, function(e){
console.log("Error",e);
}).catch(function(e){
console.log("Unknown", e);
});
Sortie :
Error [Error: Oh no!]
Cette approche garantit que les exceptions sont interceptées et traitées de manière appropriée, empêchant ainsi l'application de planter.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3