javascript - 错误对象, native 和自定义,如何区分?

标签 javascript json node.js express error-handling

在我的 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/

相关文章:

java - 从 JAXB 和 Jersey 生成更多类似 json 的 json

json - 使用Gson库动态解析未知数据

c# - 使用 Javascript ActiveX 对象触发 C# dll

javascript - 谷歌地图 : REQUEST_DENIED

javascript - 为什么构造函数只能返回一个对象?

javascript - 输入整数的总和

mongodb - 我应该使用 MongoDB 或 CouchDB 还是其他什么?

javascript - 在nodejs中使用断路器(负鼠)请求缓存

json - R - 如何在 mongolite 查询中传递值

javascript - 如何使用nodejs/python抓取whatsapp网页?