"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment gérer les exceptions non gérées dans les rappels asynchrones avec les promesses Bluebird ?

Comment gérer les exceptions non gérées dans les rappels asynchrones avec les promesses Bluebird ?

Publié le 2024-11-21
Parcourir:189

How do you handle unhandled exceptions in asynchronous callbacks with Bluebird promises?

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.

Dernier tutoriel Plus>

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