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.
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