在nodejs

时间:2016-02-16 09:14:19

标签: node.js express error-handling try-catch

我只是想知道在nodejs中使用try catch是否合适。例如,我使用节点js的加密模块,用于加密&解密。所以我正在处理任何错误,而try catch中的加密/解密是一个很好的做法?????

1 个答案:

答案 0 :(得分:6)

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

尝试/ catch可以捕获编程错误或错误代码,例如来自您不知道可能有错误的库。

喜欢:

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

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

但是try / catch还会创建一个新的执行上下文,复制范围和所有内容,就CPU时间而言,这是一项代价高昂的操作。这意味着您应该尝试避免热代码路径中的try / catch。

Node中的逻辑/业务错误通常使用错误优先回调模式(或Promises,或类似)来处理。一般来说,如果你期望程序员错误(即错误),以及你期望的错误的其他模式,你只会使用try / catch。

当然,这只是一行推理,我通常会在Java转换器编写的Node代码中看到很多有意的throw子句(意味着与try / catc一起使用)。但这可能是我特有的,所以YMMV。