gpt4 book ai didi

java - 为什么 NativeMethodAccessorImpl 声明 InitationTargetException

转载 作者:行者123 更新时间:2023-12-01 23:41:24 26 4
gpt4 key购买 nike

NativeMethodAccessorImpl invoke method声明它可以抛出 IllegalArgumentExceptionInitationTargetException

public Object invoke(Object obj, Object[] args)
throws IllegalArgumentException, InvocationTargetException
{
// We can't inflate methods belonging to vm-anonymous classes because
// that kind of class can't be referred to by name, hence can't be
// found from the generated bytecode.
if (++numInvocations > ReflectionFactory.inflationThreshold()
&& !ReflectUtil.isVMAnonymousClass(method.getDeclaringClass())) {
MethodAccessorImpl acc = (MethodAccessorImpl)
new MethodAccessorGenerator().
generateMethod(method.getDeclaringClass(),
method.getName(),
method.getParameterTypes(),
method.getReturnType(),
method.getExceptionTypes(),
method.getModifiers());
parent.setDelegate(acc);
}
return invoke0(method, obj, args);
}
private static native Object invoke0(Method m, Object obj, Object[] args);

native 方法 throws IllegalArgumentException在某些情况下,例如

Exception in thread "main" java.lang.IllegalArgumentException: argument type mismatch
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

但我没有看到任何抛出 InvocableTargetException 检查异常

的选项

native 方法 invoke0(不声明异常)是否可以抛出 InvocableTargetException

或者是由于方法签名向后/ future 兼容性而保留 InitationTargetException 吗?

最佳答案

invoke0可以抛出InitationTargetException:

Exception in Application start method
java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

例如,当找不到 FXML 资源文件时。

关于java - 为什么 NativeMethodAccessorImpl 声明 InitationTargetException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58257618/

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