【发布时间】:2016-09-01 09:23:51
【问题描述】:
在我的节点应用程序中,我想处理自定义错误以及本机错误。我似乎总是为错误处理而苦恼,因为错误似乎是一种特殊类型的对象,而不是普通的 JavaScript 对象。
我正在尝试将errors 用于自定义错误。
我想要结束的是一个 JSON 字符串,我可以针对两种类型的错误(自定义和本机)返回给客户端。
我可以创建一个自定义错误,例如:
errors.create({
name: `UnableToDelete`,
defaultMessage: `Unable to perform delete.`
});
let e1 = new errors.UnableToDelete({
explanation: `Group has members. You can't delete a group that has members.`
});
我可以创建一个本机错误,例如:
let e2 = new Error(`Unable to perform delete.`);
我也可能从其他地方(例如节点或其他第三方模块)收到本机错误,例如连接到数据库时出现问题。
- 对于自定义错误,我可以使用
JSON.stringify(e1);,它有效。 - 对于本机错误,我可以使用
errors.errorToJSON(e2);,它有效。
我遇到的问题是能够区分这些错误,因此我可以调用正确的方法。
我不想用正确的方法包装代码中的所有错误。我想让我的 Express 错误处理程序这样做:
function error(err, req, res, next) {
// use either JSON.stringify() or errors.errorToJSON() on
// the err object.
}
如何区分自定义错误和原生错误,以便知道使用哪种方法..?
【问题讨论】:
标签: javascript json node.js express error-handling