Javascript 错误对象,本机和自定义,如何区别?
在我的节点应用程序中,我希望处理自定义错误和本机错误。我似乎总是难以处理错误,因为错误似乎是一种特殊类型的对象,而不是普通的JavaScript对象 我正在尝试使用自定义错误 我想要得到的是一个JSON字符串,对于这两种类型的错误(自定义和本机),我都可以返回给客户端 我可以创建自定义错误,如:Javascript 错误对象,本机和自定义,如何区别?,javascript,json,node.js,express,error-handling,Javascript,Json,Node.js,Express,Error Handling,在我的节点应用程序中,我希望处理自定义错误和本机错误。我似乎总是难以处理错误,因为错误似乎是一种特殊类型的对象,而不是普通的JavaScript对象 我正在尝试使用自定义错误 我想要得到的是一个JSON字符串,对于这两种类型的错误(自定义和本机),我都可以返回给客户端 我可以创建自定义错误,如: errors.create({ name: `UnableToDelete`, defaultMessage: `Unable to perform delete.` }); let e1 =
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.`);
我可以创建一个本机错误,如:
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)代码>哪个有效
function error(err, req, res, next) {
// use either JSON.stringify() or errors.errorToJSON() on
// the err object.
}
如何区分自定义错误和本机错误,以便知道使用哪种方法?节点JS模块
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
这似乎奏效了。除非我很愚蠢,否则“iError”一词不会出现在本页或本页上。您是如何找到这个看似隐藏的方法的..?在源代码中找到了它:。它只检查
解释
和code
属性。奇怪的是,它不在文档中。我在中查看测试时发现了该方法:可能他们忘了将此方法添加到文档中。。。