如何处理由should.js(或node.js)失败的断言引发的未捕获异常,并在断言失败的同一函数/块上继续执行?
我尝试在try / catch中包装断言,但无论如何它似乎都会进入process.on('uncaughtexception')。
最后,在生产代码中使用断言来验证对象是一种很好的做法和效果 特性
谢谢!
答案 0 :(得分:0)
正如documentation所述,Node的断言主要用于单元测试。因此我不会在生产代码中使用它。我更喜欢单元测试,以确保断言在几种情况下都是正确的。
但是,我认为你在这里以错误的方式使用断言:如果断言失败则出错。您的应用处于某种未知状态。
如果对无效对象进行某种处理,断言不是正确的工具:据我所知,你的用例并不是真正要求对象有效,而是想要做一些与众不同的事情。这是一个简单的条件,而不是断言。
答案 1 :(得分:0)
您好@dublx我认为在生产代码中使用断言是完全有效的用例。例如。如果您依赖于您知道以某种方式行事的外部API。此API可能会突然改变并破坏您的代码。如果断言会检测到API发生了变化,并且您会收到一封自动电子邮件,那么即使您的客户认识到该中断,您也可以修复它。
那就是说我推荐assume.js来解决你的问题。即使表现也很棒:一个断言只吃17μs或0.017ms。