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)是否会有一些异常仍然会停止服务器?

感谢和问候

图科

4

1 回答 1

3

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

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

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

于 2013-01-11T11:54:42.277 回答