【问题标题】:NodeJS error handling - using error codes or subclassingNodeJS 错误处理 - 使用错误代码或子类化
【发布时间】:2016-01-17 22:19:30
【问题描述】:

在 NodeJS 中使用自定义错误代码与使用 Error 的自定义子类有什么优缺点?

在像 Java 或 Python 这样的语言中,我会使用子类,因为我可以在不同的 catch 块中处理它。但是,在 JavaScript 中,为每个精确的错误情况编写 Error 的特定子类对我来说似乎是多余的,因为如果不使用 instanceof 运算符就无法通过 catch 块使用它。顺便说一句,throw 也不是在 NodeJS 中传递错误的常用方法(我的意思是错误优先回调风格)。所以,最终,我决定坚持使用一个自定义类(继承自 Error)来解决所有项目的错误。但是,现在我应该介绍很多不同的错误代码。我想知道 - 处理 NodeJS 中的错误是否是常规流程?

【问题讨论】:

    标签: javascript node.js error-handling exception-handling


    【解决方案1】:

    为您的错误消息创建一个错误对象允许您指定可能与错误本身相关的其他内容。考虑以下几点:

    var e = new Error("An error message");
    e.status = "TERMINATED";
    e.exit_code = 127:
    

    Error 对象只是另一个 javascript 对象,因此向其添加属性是有效的。此外,您还可以使用一些有用的东西来跟踪错误消息,例如“e.stack”,以查看创建错误对象时堆栈的外观。有关 Error 对象的其他属性,请参阅this website。

    您为什么不创建一个错误工厂“类”来创建带有您需要的添加“错误代码”的错误对象?您始终可以检查您捕获的错误是否是由工厂创建的,如果它具有您扩充对象的任何属性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-01
      相关资源
      最近更新 更多