Node.js和Express中的异常处理

5

我是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)是否存在一些异常仍会导致服务器停止?
谢谢和问候
Tuco

请查看:http://machadogj.com/2013/4/error-handling-in-nodejs.html,其中包含有关Node.js中错误处理的内容。 - vsync
1个回答

3

1)这种异常处理方法是否会使某些变量处于不一致的状态取决于你的实现方式。如果你将所有变量限制在特定的请求和函数作用域中,并且不访问全局或更高级别的变量(如全局应用程序对象),那么就没有问题了。未使用的内存将在垃圾回收器处理异常后被清除。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接