node.js和express中的异常处理

时间:2012-09-11 06:11:01

标签: javascript node.js exception-handling express

我是javascript和node的新手,并且一直在尝试使用node.js和express创建一个应用程序。

我已经为错误添加了适当的回调,但它们并没有放在任何地方,有时node.js服务器因为一些异常而停止。

建议使用'upstart'或'forever'来保持node.js始终运行,并在node.js停止时启动它。

似乎express通过链接http://expressjs.com/guide.html#error-handling

提供了以下所有异常的捕获
app.use(function(err, req, res, next){
  console.error(err.stack);
  res.send(500, 'Something broke!');
});

现在正在为我工​​作。但是我在某个地方读到这样的错误捕获并不是一个好主意,因为它可能有副作用并且可能使变量处于不一致状态? 同样捕获这样的异常并不适用于所有情况,并且在某些情况下服务器仍然可以停止某些异常。这是真的吗?

我的问题可能是这个。

1)如上所述的异常处理能否使某些变量处于不一致状态? 2)是否会出现一些仍会停止服务器的例外情况?

谢谢&此致

图科

1 个答案:

答案 0 :(得分:3)

1)此异常处理方法是否可以使某些变量处于不一致状态取决于您的实现。

如果将所有变量的范围限定为特定的请求和函数,并且不访问全局或更高的变量(如全局应用程序对象),那么您将没问题。垃圾收集器在异常之后立即清除未使用的内存。

2)是的,某些例外可能会停止服务器。因此,您应该为此过程设置一个全局异常处理处理程序,如下所示:http://nodejs.org/api/process.html#process_event_uncaughtexception