与Java的断言不同,Groovy是否对生产代码提出了一个好主意?

时间:2011-11-10 10:02:33

标签: java groovy assert

在Java中,已知使用assert关键字通常是一个坏主意,因为它的行为依赖于运行时环境(默认情况下它不会执行任何操作,除非将-enableassertion传递给java运行时)。

Groovy的主张是不同的?它总是在生产代码中执行,是否建议在生产代码中使用? (在Java中,你会使用类似Preconditions的东西)

从我的理智测试中看来,默认情况下assert在没有任何标志的情况下运行良好,并且它实际上比Java关键字更强大(参见Power Assert) - 我只是在寻找一个官方/完整答案,而不是我的轶事。

1 个答案:

答案 0 :(得分:22)

Groovy断言始终在生产代码中执行,我建议在生产中使用。我认为以下内容大致相同,但Groovy版本更紧凑

Groovy的

assert file.exists(), "$file does not exist"

爪哇

if (!file.exists()) {
    throw new SomeRuntimeException(file + " does not exist");
}