3

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

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

最后,在生产代码中使用断言来验证对象属性是否是一种好的实践和高性能?

谢谢!

4

2 回答 2

0

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

也就是说,我推荐假设.js,它可以完全解决您的问题。甚至性能也很出色:一个断言只消耗 17µs 或 0.017ms。

于 2014-10-24T15:31:42.617 回答
0

正如文档所述,Node 的断言基本上是用于单元测试的。因此我不会在生产代码中使用它。我更喜欢单元测试来确保断言在几种情况下是正确的。

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

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

于 2013-04-12T11:19:16.543 回答