在我的 Node 应用程序中,我想处理自定义错误和 native 错误。我似乎总是在错误处理方面遇到困难,因为错误似乎是一种特殊类型的对象,而不是普通的 JavaScript 对象。
我正在尝试使用 errors对于自定义错误。
我想要最终得到一个 JSON 字符串,对于两种类型的错误(自定义错误和 native 错误),我都可以将其返回给客户端。
我可以创建一个自定义错误,例如:
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.`
});
我可以创建一个 native 错误,例如:
let e2 = new Error(`Unable to perform delete.`);
我还可能从其他地方收到 native 错误,例如来自 Node 或其他第三方模块,例如,如果连接到数据库时出现问题。
- 对于自定义错误,我可以使用有效的
JSON.stringify(e1);
。 - 对于 native 错误,我可以使用
errors.errorToJSON(e2);
,它有效。
我遇到的问题是能够区分这些错误之间的区别,以便我可以对其调用正确的方法。
我不想用正确的方法来包装代码中各处的每个错误。我想让我的 Express 错误处理程序执行此操作:
function error(err, req, res, next) {
// use either JSON.stringify() or errors.errorToJSON() on
// the err object.
}
如何区分自定义错误和 native 错误,以便知道使用哪种方法......?
最佳答案
nodejs 模块 errors
导出一个名为 isError(err)
的函数,如果您发送该模块创建的自定义错误,该函数将返回 true
.
var customError = new errors.HttpError();
var nativeError = new Error();
errors.isError(customError); // Will return true
errors.isError(nativeError); // Will return false
关于javascript - 错误对象, native 和自定义,如何区分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37070083/