java断言无例外

时间:2012-08-29 00:40:52

标签: java assert

我们有一些java代码,我们希望以三种方式运行:

  1. assert失败时抛出异常
  2. 打印堆栈跟踪,但在assert失败时继续
  3. 忽略assert
  4. 这将在三个不同的环境中运行(分别是开发,测试和生产)。我们可以使用-ea JVM选项在第一个和最后一个之间切换,但是可以做第二个吗?

    感谢。

    编辑:我们已经到处都有断言。我们更喜欢在运行时更改此选项而不更改我们的代码。

3 个答案:

答案 0 :(得分:4)

您似乎想要使用单元测试而不是Java的内置assert。了解JUnit可以为您和您的团队做些什么。

您可以设置要运行的测试,他们会通知您失败。如果您想要堆栈跟踪,可以通过引发/捕获异常来创建自己的跟踪,然后使用e.printStackTrace()

答案 1 :(得分:0)

你不能,不能使用AssertAssert专门设计为失败而不被忽视。

答案 2 :(得分:0)

你很容易实现#2,因为assert会抛出AssertionError

try {
  assert false;
} catch (final AssertionError error) {
  error.printStackTrace();
}
System.out.println("survived!");