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