Java - 用断言问题编程

Seb*_*ber 8 java assert exception assertions java-ee

我想知道是否有很多人用java编程断言.我认为这对于没有足够书面合同或过时合同的大型项目非常有用.特别是当你使用webservices,组件......

但我从未见过任何使用断言的项目(除了junit/testng测试......).

我注意到抛出的类是一个错误而不是异常.有人能告诉我他们为什么选择错误吗?可能是因为异常可能被意外捕获而不是记录器/重新抛出?

如果您使用组件开发应用程序,我想知道您在哪里放置断言: - 在组件方面,就在通过公共API返回数据之前? - 在组件客户端?如果在任何地方调用api,你会设置一个称为断言机制的外观模式?(然后我猜你把你的断言和外观放在一些外部项目上,你的客户端项目将依赖于这个断言项目?)

我理解如何使用断言,并在使用它们时,只是想知道是否有人根据真实的断言经验提出建议.

谢谢

dag*_*ies 5

顺便问一下,你assert在java中提到了吗?

我个人发现断言对不变量特别有用.考虑到java中默认关闭断言检查.您必须添加-ea标志以启用断言检查.换句话说,您可以在一种调试模式下测试您的应用程序,一旦断言被破坏,程序将停止.另一方面,释放应用程序将关闭其断言,并且不会因断言检查而产生时间损失,它们将被忽略.

在java中,断言远没有异常强大,并且具有完全不同的含义.当出现意外情况并且您必须处理它时会出现例外情况.断言是关于代码的正确性.他们在这里确认"应该是"的确是这样.

我的粗略政策,特别是与许多开发人员合作时:

  • 公共方法:总是检查参数并在出现错误时抛出IllegalArgumentException
  • 私有方法:使用断言来检查针对空指针的参数,依此类推
  • 复杂方法:中间断言,以确保中间结果满足所请求的属性

......但实际上,我使用它们.只是它的关键或容易出错的地方.