gpt4 book ai didi

Java - 从反射调用的构造函数中捕获异常

转载 作者:搜寻专家 更新时间:2023-10-31 08:17:38 26 4
gpt4 key购买 nike

我正在使用反射创建一个对象。根据正在构造的实际对象,构造函数可能有针对特定自定义异常的 throws 声明,这很重要,我可以捕获它。

不幸的是,当我尝试将异常添加到包含反射构造的 try block 的捕获中时,代码将无法编译,因为:

"Unreachable catch block. This exception is never thrown from the try statement body"

我意识到捕获基类 Exception 会起作用,事实上这对我的代码来说是可以的。然而,情况可能并非总是如此,因为其他不同的异常将来可能适用于其他对象,并且在 catch 内部使用 instanceof 并重新抛出其他所有内容似乎并不优雅。

有没有办法表明可能会抛出此异常,以便我可以专门捕获它?

edit: 请求的一些代码。由于上述原因无法编译。

try{
Constructor<? extends Thing> constructor = getClassType().getDeclaredConstructor(SomeParameter.class);
Thing thing = constructor.newInstance(new SomeParameter());
}
catch(FoobarException e){
//new Thing(SomeParameter p) might throw this
}
catch(ReflectiveOperationException | IllegalArgumentException | SecurityException e){}

最佳答案

异常将被包裹在 InvocationTargetException 中抛出。捕获它并查看原因。

关于Java - 从反射调用的构造函数中捕获异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11752228/

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