Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是Groovy';与Java'不同,s断言生产代码是一个好主意;谁断言?_Java_Groovy_Assert - Fatal编程技术网

是Groovy';与Java'不同,s断言生产代码是一个好主意;谁断言?

是Groovy';与Java'不同,s断言生产代码是一个好主意;谁断言?,java,groovy,assert,Java,Groovy,Assert,在Java中,众所周知,使用assert关键字通常是个坏主意,因为它的行为取决于运行时环境(默认情况下它不会做任何事情,除非将-enablessertion传递给Java运行时) Groovy的断言不同吗?它是否总是在生产代码中执行,是否建议在生产代码中使用?(在Java中,您将使用类似的内容) 从我的理智测试来看,默认情况下,assert在没有任何标志的情况下运行良好,而且它实际上比Java关键字更强大(请参阅)-我只是在寻找一个正式/完整的答案,而不是我的轶事答案。Groovy assert

在Java中,众所周知,使用
assert
关键字通常是个坏主意,因为它的行为取决于运行时环境(默认情况下它不会做任何事情,除非将-enablessertion传递给Java运行时)

Groovy的断言不同吗?它是否总是在生产代码中执行,是否建议在生产代码中使用?(在Java中,您将使用类似的内容)


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

Groovy assert总是在生产代码中执行,我建议在生产中使用。我认为以下内容大致相当,但Groovy版本更紧凑

棒极了 JAVA
好极了,我就是这么想的(双关语的意思)。当我使用Groovy时,我越来越喜欢它。您应该注意,AssertionError是一个java.lang.Error,不会被catch(e)捕获,您应该使用catch(Throwable e)@loteq IMO您应该很少(如果有)捕获断言抛出的
Throwable
,因为通常一个失败的断言是不可恢复的,在Groovy中使用这样的断言只适用于半自动编码!!一个失败的断言意味着开发者的假设被违反了(比如:“assert x>0:”如果$x你不应该捕捉
Throwable
,但是捕捉
AssertionError
,如果你能从中恢复过来,那是可以接受的。@tim_yates-我的问题是“有点重复”“,但我认为它的表述更为精确……也许另一个问题现在应该以dup结束?对不起,我是说它是相关的,而不是一个dup;-)Peter Niederwieser提出了一些好的观点,这些观点不一定已经包含在这里的答案中…@tim_yates-嗯,这似乎是高度相关的,即使不是“精确的dup”。。。我不确定这两个问题都有价值。。。但我不会吹毛求疵的。无论如何,谢谢你的参考!我不认为这是欺骗
assert file.exists(), "$file does not exist"
if (!file.exists()) {
    throw new SomeRuntimeException(file + " does not exist");
}