Node.js 节点-在不崩溃的情况下处理数据库错误

Node.js 节点-在不崩溃的情况下处理数据库错误,node.js,Node.js,无论数据库的类型如何,我都无法清楚地了解在不使应用程序崩溃的情况下处理db错误的最佳方法 e.g connecting with sql pool.getConnection(function(err, connection) { if (err) { throw err } connection.execute('select * ...' , values, function(err, result) { if (err) { throw err;

无论数据库的类型如何,我都无法清楚地了解在不使应用程序崩溃的情况下处理db错误的最佳方法

e.g connecting with sql

pool.getConnection(function(err, connection) {
  if (err) {
    throw err
  }

  connection.execute('select * ...' , values, function(err, result) {
    if (err) {
     throw err;
   }
}); 

});
在上述两种情况下,我抛出的错误都会导致节点服务器崩溃。
我想注册错误并以最优雅的方式响应请求。有人能指出正确的方向吗?

当你抛出错误时,需要有人抓住他们。如果在代码中的任何地方都没有捕捉到它们,就会导致程序崩溃

因此,基本上您需要做的是用try/catch包装对函数的调用,如果您捕获了,请记录它并向请求者返回适当的响应

比如:

try {
 pool.getConnection(function(err, connection) {
  if (err) {
    throw err
  }

  connection.execute('select * ...' , values, function(err, result) {
    if (err) {
     throw err;
   }
 }); 
 });
} catch (error) {
  log(error);
  res.status(500).body("failed to get ... " + err).send();
}

我还建议阅读,对主题有很好的解释

注意,这只适用于同步javascript。这个问题很可能涉及异步js,它不适用于try/catch(您链接的站点明确声明
“此模式不起作用!”
)。这将不起作用,因为您无法以这种方式捕获异步异常。