Javascript NodeJS错误处理-使用错误代码或子类化

Javascript NodeJS错误处理-使用错误代码或子类化,javascript,node.js,error-handling,exception-handling,Javascript,Node.js,Error Handling,Exception Handling,在NodeJS中使用自定义错误代码与使用error的自定义子类的过程和缺点是什么 在Java或Python这样的语言中,我会使用子类,因为我可以在不同的catch块中处理它。然而,在JavaScript中,为每个精确的错误情况编写一个特定的Error子类对我来说是多余的,因为如果不使用instanceof操作符,您就无法通过catch块来利用它。顺便说一下,throw也不是在NodeJS中传递错误的常用方法(我指的是错误优先回调样式)。所以,最终,我决定坚持使用一个自定义类(继承自Error)来

在NodeJS中使用自定义错误代码与使用
error
的自定义子类的过程和缺点是什么


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

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

var e = new Error("An error message");
e.status = "TERMINATED";
e.exit_code = 127:
错误对象只是另一个javascript对象,因此向其添加属性是有效的。此外,您还可以使用一些有用的工具来跟踪错误消息,例如“e.stack”,以查看创建错误对象时堆栈的外观。有关错误对象的其他属性,请参阅


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

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

var e = new Error("An error message");
e.status = "TERMINATED";
e.exit_code = 127:
错误对象只是另一个javascript对象,因此向其添加属性是有效的。此外,您还可以使用一些有用的工具来跟踪错误消息,例如“e.stack”,以查看创建错误对象时堆栈的外观。有关错误对象的其他属性,请参阅

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