"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo se manejan las excepciones no controladas en devoluciones de llamadas asincrónicas con promesas de Bluebird?

¿Cómo se manejan las excepciones no controladas en devoluciones de llamadas asincrónicas con promesas de Bluebird?

Publicado el 2024-11-21
Navegar:773

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

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.

Último tutorial Más>

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