Manejo de excepciones asincrónicas con promesas de Bluebird
P: ¿Cómo manejar excepciones no controladas en devoluciones de llamadas asincrónicas con promesas de Bluebird?
Las promesas de Bluebird no detectan inherentemente las excepciones generadas por devoluciones de llamadas asincrónicas, a diferencia de dominios.
R: Use constructores de promesa o luego() cierres para manejar excepciones
Para detectar excepciones en devoluciones de llamada asíncronas, ajuste la devolución de llamada en un constructor de promesa o luego( ) cierre:
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 realizar devoluciones de llamadas asíncronas personalizadas
Nunca inicie excepciones directamente en devoluciones de llamadas asíncronas personalizadas (fuera de las devoluciones de llamadas prometidas). En su lugar, rechace la promesa circundante:
function getPromise(){
return new Promise(function(done, reject){
setTimeout(done, 500);
}).then(function() {
console.log("hihihihi");
reject(new Error("Oh no!"));
});
}
Ejemplo
Usando un constructor de promesas:
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);
});
Salida:
Error [Error: Oh no!]
Este enfoque garantiza que las excepciones se detecten y manejen adecuadamente, evitando que la aplicación falle.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3