在nodejs中使用try catch是很好的

我只想知道在nodejs中使用try catch是否好。 例如,我正在使用节点js的encryption模块进行encryption和解密。 所以我正在处理任何错误,而encryption/解密在尝试赶上是一个很好的做法?????

如果您的encryption/解密调用是同步的(取决于您使用的库,模块,函数),请尝试/ catch使用它,否则取决于您如何使用它,可能是没用的。

try / catch可以捕获编程错误或错误的代码,例如从你不知道的库中可能会出错。

喜欢:

try { libraryLib.encrypt(notSureIfThisIsAValidParam); } catch (err) {...} 

您不确定是否设置了用户/密码,并且您不确定encryption库是否可能失败,因此您将其包装。

但是try / catch也会创build一个新的执行上下文,复制范围和全部内容,这对CPU时间来说是一个代价高昂的操作。 这意味着您应该尽量避免在热代码path中尝试/捕获。

Node中的逻辑/业务错误通常是使用错误优先callback模式(或Promise或类似的)来处理的。 一般来说,如果您期望程序员错误(即错误),以及其他预期错误模式,则只能使用try / catch。

当然,这只是一种推理,我通常会在由Java转换器编写的节点代码中看到很多故意throw子句(旨在用于try / catc)。 但是,这可能是特定于我,所以YMMV。