gpt4 book ai didi

java - 为什么 Groovy 从多捕获 block 中抛出 ClassCastException

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:17:09 27 4
gpt4 key购买 nike

我有以下使用 org.codehaus.groovy:groovy-all:2.4.5...

静态编译的 Groovy 测试代码
import groovy.transform.CompileStatic
import org.junit.Test
import javax.ws.rs.BadRequestException

@CompileStatic
public class GroovySandbox
{

@Test
public void multiCatchClassCastException()
{
try
{
throw new ArithmeticException( "message" );
}
catch ( ArithmeticException | BadRequestException e )
{
System.out.println( e.getMessage() );
}

}

}

当我运行测试时,我得到一个 ClassCastException...

java.lang.ClassCastException: java.lang.ArithmeticException cannot be cast to javax.ws.rs.BadRequestException

如果我从 Java 测试文件运行完全相同的代码,测试工作正常。

如果我在 try block 中抛出 BadRequestException,我可以很好地调用 getMessage() 而无需获取 ClassCastException。异常类型在 multi-catch block 中的排列顺序似乎很重要。

我可以通过使用 as 关键字将异常转换为 Exception 类型来解决这个问题,但我想尽可能避免这种情况。

我是不是漏掉了什么?

谢谢!

最佳答案

这是一个 bug,在 Groovy 3.0 Alpha 中已经修复(我测试过)

我认为它也可能在 Groovy 2.6 中得到修复,因为它们使用相同的 Parrot Parser。

关于java - 为什么 Groovy 从多捕获 block 中抛出 ClassCastException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33790376/

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