Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript node.js和express中的异常处理_Javascript_Node.js_Exception Handling_Express - Fatal编程技术网

Javascript node.js和express中的异常处理

Javascript node.js和express中的异常处理,javascript,node.js,exception-handling,express,Javascript,Node.js,Exception Handling,Express,我不熟悉javascript和node,一直在尝试使用node.js和express创建应用程序 我已经为错误设置了适当的回调,但它们并不是放在任何地方,有时node.js服务器会因为出现异常而停止 建议使用“upstart”或“forever”保持node.js始终运行,并在node.js停止时启动它 express似乎通过以下链接为所有异常提供了一个全面的解决方案 它现在正在为我工作。然而,我在某个地方读到,捕捉这样的错误不是一个好主意,因为它可能会产生副作用,并且会使变量处于不一致的状态?

我不熟悉javascript和node,一直在尝试使用node.js和express创建应用程序

我已经为错误设置了适当的回调,但它们并不是放在任何地方,有时node.js服务器会因为出现异常而停止

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

express似乎通过以下链接为所有异常提供了一个全面的解决方案

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

我的问题可能是这样的

1) 像上面这样的异常处理会使一些变量处于不一致的状态吗? 2) 是否存在仍将停止服务器的某些异常

谢谢和问候

Tuco

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

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

2) 是的,某些异常可能会停止服务器。因此,您应该为如下流程设置全局异常处理程序:

请参阅:
app.use(function(err, req, res, next){
  console.error(err.stack);
  res.send(500, 'Something broke!');
});