NodeJS:防止应用程序因错误而崩溃

had*_*adf 3 error-handling node.js

当 NodeJS 应用程序发生错误时,如果发生异常,服务器可能会崩溃并停止。

如何防止这种情况,以便服务器永远不会因错误而停止,而是返回错误代码?

- 编辑

这是导致服​​务器崩溃的方法(表 foo 不存在):

app.get('/articles/list', function(req, res) {
    connection.query('select * from foo', function(err, rows, fields) {
        if (err) throw err;
        res.send(JSON.stringify(rows));
    });
});
Run Code Online (Sandbox Code Playgroud)

-- 最佳解决方案最后,我找到了最适合我的解决方案:http : //rowanmanning.com/posts/node-cluster-and-express/

总之,它包括使用服务器集群,并在服务器退出时重新启动服务器

Bor*_*hik 5

如果你正在使用express,你可以使用这个

function clientErrorHandler (err, req, res, next) {
   if (req.xhr) {
      res.status(500).send({ error: 'Something failed!' })
    } else {
      next(err)
   }
}

app.use(clientErrorHandler);
Run Code Online (Sandbox Code Playgroud)

我建议你准备好这篇文章,它会为你澄清很多。JFK,请注意异步错误捕获,这是最常见的错误,一旦您拥有包含在try-catch. 此外,避免使用

process.on("uncaughException", () => {....})
Run Code Online (Sandbox Code Playgroud)

这是相当糟糕的,因为当一个未捕获的异常被抛出,你不能可靠地继续你的程序在这个point.Let它失败,并重新启动daemonizer's一样pm2forever等。