【发布时间】:2021-08-26 23:47:08
【问题描述】:
问题:当错误发生时try catch 阻止 Express 服务器崩溃。但是,如果路由没有停止,我该如何向客户端发送错误页面?
背景:也许我正在处理这个错误,但如果出现数据库错误或类似问题,客户端不应该收到错误页面吗?
示例:在下面的简化示例中,try catch 可防止服务器崩溃。但是,它也会阻止 500.html 被发送到客户端,因为事件循环总是会到达 res.render('homepage') 并发送它。
app.get('/', function(req, res, next) {
let cat = 10;
try {
if (cat === 10) throw new Error('cat should not be 10');
} catch(error) {
next(error);
}
res.render('homepage');
}
// custom error handler
app.use( function(error, req, res, next) {
console.log(error);
let filePath = path.join(__dirname, '/error-pages/500.html');
res.status(500).sendFile(filePath);
});
【问题讨论】:
标签: node.js express error-handling