Node.js Express - 根据错误类型以不同方式处理错误
Node.js Express - Handle Error Differently Based on Error Type
一些细节...我使用 Express 4、Node 0.12.2 和 Express-Handlebars 作为我的视图引擎。
我正在尝试通过 AJAX 调用呈现部分内容,并希望以不同方式处理不同的错误类型。在回调调用上传递的 err 对象似乎没有太多有用的信息可以使用,只是一条错误消息。我在这里遗漏了什么吗?
// Search (Partial)
router.get('/search-products', function (req, res, next) {
res.render('partials/search/products', {layout: 'ajax'}, function(err, html){
if(err) {
// return res.status(404).send(err);
// return res.status(500).send(err);
}
res.send(html);
});
});
该错误对象不会有状态代码,因为它是由视图引擎生成的错误对象。如果出现该错误,您几乎可以认为这是一个 500 错误,因为视图引擎由于某种原因无法编译视图。
例如,如果您使用的是 Jade,如果您尝试让 Jade 编译具有无效 Jade 语法的模板,则会填充该错误对象。那里的错误永远不会与 HTTP 相关,这意味着它始终只是服务器端错误,状态代码 500 就足够了。
一些细节...我使用 Express 4、Node 0.12.2 和 Express-Handlebars 作为我的视图引擎。
我正在尝试通过 AJAX 调用呈现部分内容,并希望以不同方式处理不同的错误类型。在回调调用上传递的 err 对象似乎没有太多有用的信息可以使用,只是一条错误消息。我在这里遗漏了什么吗?
// Search (Partial)
router.get('/search-products', function (req, res, next) {
res.render('partials/search/products', {layout: 'ajax'}, function(err, html){
if(err) {
// return res.status(404).send(err);
// return res.status(500).send(err);
}
res.send(html);
});
});
该错误对象不会有状态代码,因为它是由视图引擎生成的错误对象。如果出现该错误,您几乎可以认为这是一个 500 错误,因为视图引擎由于某种原因无法编译视图。
例如,如果您使用的是 Jade,如果您尝试让 Jade 编译具有无效 Jade 语法的模板,则会填充该错误对象。那里的错误永远不会与 HTTP 相关,这意味着它始终只是服务器端错误,状态代码 500 就足够了。