捕获回调函数引发的错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了捕获回调函数引发的错误相关的知识,希望对你有一定的参考价值。

我已将异步函数与回调相结合,因为我需要异步函数来等待另一个异步函数。回调抛出了我需要捕获的错误。如何捕获异步函数调用的回调中抛出的错误? someFunction是异步的,下面代码中的try-catch块不起作用

let someAsyncFunction = async () => {
    return true
}

let someFunction =  async (callback)=> {
    await someAsyncFunction()
    callback()
}

try {
    someFunction(()=> {
        throw ("Some error")
        console.log("Callback has been called")
    });

} catch (error) {
    console.log(error)
}

这是实际的代码。抛出错误,第一个函数运行良好。我试图让第二个功能做同样的事情。

async facebook(req, res, next) {
    throw ({status:405, message:"Method not allowed"})
}


async login(req, res, next) {
        let __promisifiedPassportAuthentication = function () {
            return new Promise((resolve, reject) => {
                passport.authenticate('local', (err, user, info) => {
                    if(err)reject(err)
                    if(user === false || user === null)reject({message:"No such user"})
                })(req, res, next) 
            })
        }

        __promisifiedPassportAuthentication().catch((err)=>{
            //How do I get this error to be thrown by the (parent) function login?
            // Promise.reject(err)
            throw(err)

        })
    }

和护照策略

passport.use( new LocalStrategy({ usernameField: 'email' }, async (email, password, done) => {
  let [err, dontcare, care] = [];
  let person = {Email: email}

  ;[err, care] = await to (Familyfe.Person.which(person))
  //force err to have some value 
  err = true
  if(err)return done(err);

}));

以上是关于捕获回调函数引发的错误的主要内容,如果未能解决你的问题,请参考以下文章

使用 P/Invoke 在托管和非托管回调链上引发异常

为啥代码片段在 matplotlib 2.0.2 上运行良好,但在 matplotlib 2.1.0 上引发错误

未捕获的类型错误:无法在“窗口”上执行“requestAnimationFrame”:作为参数 1 提供的回调不是函数

在 Node/Express 的异步函数中捕获错误

如何在 node.js 中捕获同步函数中的错误?

如何修复“本地捕获的异常”?