无论数据库的类型如何,我都无法清楚地了解处理数据库错误的最佳方法,而不会导致应用程序崩溃。
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;
}
});
});
在上述两种情况下,我都会抛出导致节点服务器崩溃的错误。 我想注册错误并以最优雅的方式回复请求。任何人都可以指出正确的方向吗?
答案 0 :(得分:1)
当你抛出错误时,有人需要抓住它们。如果你没有在代码中的任何地方捕获它们,它将导致程序崩溃。
所以基本上你需要做的就是使用try / catch包含对函数的调用,以防你记录它并向请求者返回一个apporopriate响应。
类似的东西:
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();
}
我还建议阅读this blog post,对主题有很好的解释