NodeJS - app.use(函数(err,req,res,next){})和process.on('uncaughtException',function(err){})之间的区别

时间:2015-02-26 17:04:39

标签: node.js express error-handling throw

我正在尝试在我的节点项目上创建一个错误处理程序,但我不明白。

对于抛出错误,我可以从两种不同的方式捕获:

process.on()

process.on('uncaughtException', function(err) {
   // Nothing to do... Client request can't be closed
});

app.use()

app.use(function(err, req, res, next) {
   res.send("Humm... To bad !", 500);
});

我正在使用具有RESTful API的函数:

app.use(function(req, res, next) {
  // throw new Error("This error is caught by app.use()");
  api.getData(function(err, result) {
    if (err) {
      // throw new Error("This error is caught by process.on()");
    }
    /* Some code here */
  });
});

我真的不明白两者之间的区别是什么..而且我不喜欢process.on()方式,关于这个catch我没有访问req和res发送500错误页面到客户..

1 个答案:

答案 0 :(得分:1)

process.on()将处理进程中任何未被捕获的错误,其中app.use是处理请求处理错误的正确方法。您还可以通过调用next(err)

来定义多个此类处理程序并将它们链接在一起