美文网首页Node.js
[Node.js] 异步函数中的异常

[Node.js] 异步函数中的异常

作者: 何幻 | 来源:发表于2017-01-12 23:51 被阅读18次

在异步函数中抛异常,很难被捕获到,
因为异步任务会放在task queue中,等下一次event loop才被调用。


(1)try...catch,在throw之前try已经执行完了

try {
    setTimeout(() => {
        throw 1;
    }, 0);
} catch (e) {
    console.log(e);
}

// 报错:Uncaught 1

(2)在throw之前,.then()已经执行完了

Promise.resolve(1).then(v => {
    setTimeout(() => {
        throw 1;
    }, 0);
}).catch(v => {
    console.log(v);
});

// 报错:Uncaught 1

解决它的一种办法是,将异常以回调的方式返回。

asyncFunc((err, data) => {
    if(err){
        // ...
        return;
    }

    // ...
});

参考

Error Handling in Node.js

相关文章

  • [Node.js] 异步函数中的异常

    在异步函数中抛异常,很难被捕获到,因为异步任务会放在task queue中,等下一次event loop才被调用。...

  • Promise 异步控制流

    Node.js 风格函数的 promise 化 在 Javascript 中, 并非所有的异步控制函数和库都支持开...

  • Node.js异常处理

    Node.js异常分类: 变量异常 函数异常 调用异常 变量异常 未定义变量 未包含对象 变量类型错误 函数异常 ...

  • 01node.js

    01、模块 02、关注学习 03、Node.js 回调函数Node.js 异步编程的直接体现就是回调。异步编程依托...

  • node教程--回调函数

    node异步读取文件: node同步读取文件: 在 Node.js 中,异步式 I/O 是通过回调函数来实现的 f...

  • Node.js中的异步

    title: Node.js中的异步categories: techtags: 异步 Node.js 前言 写No...

  • 07_Node.js Event

    一、回调函数 callback 1、回调函数 Node.js 异步编程的直接体现就是回调,异步编程依托于回调来实现...

  • Node学习(3)--异步编程

    Node.js 回调函数 Node.js 异步编程的直接体现就是回调。 异步编程依托于回调来实现,但不能说使用了回...

  • node.js(六)

    Node.js 回调函数Node.js 异步编程的直接体现就是回调。异步编程依托于回调来实现,但不能说使用了回调后...

  • 2020-02-23

    Node.js回调函数 Node.js异步编程的直接体现就是回调 异步编程依托于回调来实现,但不能说使用了回调后程...

网友评论

    本文标题:[Node.js] 异步函数中的异常

    本文链接:https://www.haomeiwen.com/subject/limjbttx.html