如何处理should.js断言错误

时间:2013-04-12 11:06:04

标签: node.js exception assert handle should.js

如何处理由should.js(或node.js)失败的断言引发的未捕获异常,并在断言失败的同一函数/块上继续执行?

我尝试在try / catch中包装断言,但无论如何它似乎都会进入process.on('uncaughtexception')。

最后,在生产代码中使用断言来验证对象是一种很好的做法和效果 特性

谢谢!

2 个答案:

答案 0 :(得分:0)

正如documentation所述,Node的断言主要用于单元测试。因此我不会在生产代码中使用它。我更喜欢单元测试,以确保断言在几种情况下都是正确的。

但是,我认为你在这里以错误的方式使用断言:如果断言失败则出错。您的应用处于某种未知状态。

如果对无效对象进行某种处理,断言不是正确的工具:据我所知,你的用例并不是真正要求对象有效,而是想要做一些与众不同的事情。这是一个简单的条件,而不是断言。

答案 1 :(得分:0)

您好@dublx我认为在生产代码中使用断言是完全有效的用例。例如。如果您依赖于您知道以某种方式行事的外部API。此API可能会突然改变并破坏您的代码。如果断言会检测到API发生了变化,并且您会收到一封自动电子邮件,那么即使您的客户认识到该中断,您也可以修复它。

那就是说我推荐assume.js来解决你的问题。即使表现也很棒:一个断言只吃17μs或0.017ms。