Manejo de errores asincrónicos con encadenamiento de promesas
Cuando se trabaja con código asincrónico, es crucial considerar cómo manejar los errores de manera efectiva. Las excepciones no detectadas pueden bloquear su aplicación, por lo que es importante contar con una estrategia.
En el escenario descrito, se crea una Promesa con un setTimeout que genera un error. El controlador de captura de Bluebird Promise no detectará este error porque ocurre dentro de una devolución de llamada asincrónica.
Manejo de excepciones dentro de las promesas
Las promesas, sin embargo, pueden detectar excepciones que se lanzan dentro sus propias funciones de devolución de llamada. Para manejar este tipo de error, puede:
function getPromise() {
return new Promise(function(done, reject) {
setTimeout(done, 500);
}).then(function() {
console.log("hihihihi");
throw new Error("Oh no!");
});
}
Aquí, el error se genera dentro de la devolución de llamada, lo que garantiza que será detectado por el controlador de captura de la Promesa.
Advertencias con las devoluciones de llamada asincrónicas
Es fundamental recordar que las promesas no detectan excepciones de devoluciones de llamadas asincrónicas que no están dentro de su propio ámbito. Para manejar este tipo de errores, considere:
Ejemplo de manejo de devoluciones de llamadas asíncronas no autorizadas
Para manejar una devolución de llamadas asíncronas no autorizadas en Node.js o el navegador, puede utilizar el siguiente enfoque:
function getPromise() {
return new Promise(function(done, reject) {
setTimeout(function() {
try {
// Your rogue async callback here
console.log("hihihihi");
} catch (e) {
reject(e);
}
}, 500);
});
}
Al manejar manualmente cualquier excepción dentro de la devolución de llamada, este enfoque garantiza que no bloquearán su aplicación.
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