【发布时间】:2013-12-12 02:56:12
【问题描述】:
我正在编写一个与 REST API 对话的模块,并且由于 REST API 提供了良好的语义错误响应(例如 403 与 503),我想将这些语义错误传达给调用者。
(编辑:我的意思是,调用者应该能够以编程方式理解错误的原因并采取相应的行动,例如显示适当的 UI。)
对我来说最好的方法是什么?
为这些语义创建我自己的
Error子类,例如mymodule.ForbiddenError,mymodule.ServiceUnavailableError?然后调用者将检查instanceof以获取语义。这在 C# 和 Java 等静态类型语言中最为典型。添加例如标准
Error实例的mymoduleCode属性,带有'Forbidden'或'ServiceUnavailable'等语义字符串。 Node.js 本身就是这样做的,例如code: 'ECONNREFUSED'。其他方式?
==
我现在正在编写另一个模块,它包装了第一个模块。我不想直接暴露内部模块的错误,但是为了可调试性,组合/包装它们会很好。
对我来说最好的方法是什么?
添加例如我的
Error实例的internalError属性引用了内部模块的Error实例。 C# 和 Java 再次这样做。 (Exception#InnerException/Throwable#cause)其他方式?
不过,我见过的大多数工具只显示Error 实例的stack 属性,因此在这些情况下这些数据会丢失。是否存在已经存在的典型/常规方式?
【问题讨论】:
标签: javascript node.js error-handling