应该如何处理由should.js (或node.js)失败的断言抛出的未捕获异常,并在断言失败的同一函数/块上保持执行?
我试着将断言包装在一个try/catch中,但它似乎被放到了process.on('uncaughtexception')中。
最后,在您的生产代码中使用断言来验证对象属性是一种良好的实践和性能吗?
谢谢!
发布于 2013-04-12 19:19:17
正如documentation声明的那样,Node的断言基本上是为了进行单元测试。因此,我不会在生产代码中使用它。我更喜欢单元测试,以确保断言在某些情况下是正确的。
然而,我认为您在这里以错误的方式使用assert :如果一个断言失败,那么就是错误的。你的应用程序处于某种未知状态。
如果你有一些处理无效对象的方法,断言不是正确的工具:据我所知,你并不是真的要求一个对象是有效的,但是如果它不是有效的,你想做一些不同的事情。这是一个简单的条件,而不是断言。
发布于 2014-10-24 23:31:43
Hi @dublx我认为在生产代码中使用断言是非常有效的用例。例如,如果您依赖于您知道以某种方式运行的外部API。此API可能会突然更改并破坏您的代码。如果断言检测到API发生了更改,并且您将收到一封自动的电子邮件,那么您甚至可以在您的客户意识到中断之前修复它。
也就是说,我推荐assume.js,它恰好解决了你的问题。即使是性能也很出色:一个断言只需要17微秒或0.017毫秒。
https://stackoverflow.com/questions/15969770
复制相似问题