node.js 异常处理 和 domain

node.js 的纯异步思路给编程带来了新的体验,同时也挖了一些坑…

无效的 try…catch

在 node.js 中,你无法使用传统的 try…catch 来捕获异步函数中的异常。看这段代码

try{
    ...

    setTimeout(function(){
        ...
        throw new Error("some error");
        ...
    },1000);
}
catch{
    // 处理异常
}

此处 throw 所抛出的异常是无法被 catch 到的,因为异常是在 try 执行完毕之后才被抛出的,此时 try…catch 的作用域已经不存在了。
Continue reading “node.js 异常处理 和 domain”