gpt4 book ai didi

exception - Groovy catch 语句奇怪的行为

转载 作者:行者123 更新时间:2023-12-04 22:31:06 25 4
gpt4 key购买 nike

我有以下 2 个 groovy 片段,它们应该做同样的事情,但他们没有。

try {
throw new RuntimeException()
} catch (IllegalStateException) {
println("hello!")
}

'hello!' 的输出
try {
throw new RuntimeException()
} catch (IllegalStateException e) {
println("hello!")
}

而这个输出是一个意外的异常:
Caught: java.lang.RuntimeException
java.lang.RuntimeException
at 2.run(2.groovy:2)

请注意,唯一的区别是在一个片段中,catch 块中没有 e 参数。

我正在运行以下版本的 groovy 和 JVM。
groovy --version
Groovy Version: 2.0.5 JVM: 1.6.0_37 Vendor: Sun Microsystems Inc. OS: Linux

这是预期的行为还是编译器中的错误?
谢谢

最佳答案

在第一种情况下,您要引入一个名为 IllegalStateException 的变量。它相当于:

try {
throw new RuntimeException()
} catch (Exception IllegalStateException) {
println("hello!")
}

在第二种情况下,您只捕获 IllegalStateException ,这不是抛出的异常类型,因此 catch 块不会捕获它。

它不等同于 C# 的含义,在那里您会说您只想捕获 IllegalStateException ,但您不需要变量,因为您不关心异常对象。

请参阅 Groovy style and language feature guidelines for Java developers 文档的“捕获任何异常”部分。

关于exception - Groovy catch 语句奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24913920/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com