"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como você lida com exceções não tratadas em retornos de chamada assíncronos com promessas do Bluebird?

Como você lida com exceções não tratadas em retornos de chamada assíncronos com promessas do Bluebird?

Publicado em 2024-11-21
Navegar:911

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

Tratamento de exceções assíncronas com promessas do Bluebird

P: Como lidar com exceções não tratadas em retornos de chamada assíncronos com promessas do Bluebird?

As promessas do Bluebird não capturam inerentemente exceções lançadas de retornos de chamada assíncronos, ao contrário domínios.

R: Use construtores de promessa ou fechamentos then() para lidar com exceções

Para capturar exceções em retornos de chamada assíncronos, envolva o retorno de chamada em um construtor de promessa ou then( ) encerramento:

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

Evite lançar retornos de chamada assíncronos personalizados

Nunca lance exceções diretamente em retornos de chamada assíncronos personalizados (fora dos retornos de chamada prometidos). Em vez disso, rejeite a promessa ao redor:

function getPromise(){
    return new Promise(function(done, reject){
        setTimeout(done, 500);
    }).then(function() {
        console.log("hihihihi");
        reject(new Error("Oh no!"));
    });
}

Exemplo

Usando um construtor de promessa:

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

Saída:

Error [Error: Oh no!]

Essa abordagem garante que as exceções sejam capturadas e tratadas adequadamente, evitando que o aplicativo trave.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3