gpt4 book ai didi

java - 预期的空指针导致意外的 InvokingTargetException

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

XML 文件被用作临时缓存,以通过 SOAP 请求存储临时值(多个配置值)。多个线程将使用该文件,因此如果该文件已更新,我不想写入该文件。在第一次通过代码时,我希望缓存返回 null,之后文件将被更新。但是,当退出finally block 时,我收到一个InitationTargetException,并且程序失败。我不明白为什么空 CacheValues 对象会抛出异常。

public class TempCache{
private final ReadWriteLock myLock = new ReentrantReadWriteLock();
private final MyCache cache = XmlCache.getInstance(); //creates singleton
//instance, but doesn't
//set values upon
//initialization...

public CacheValues getCache(){
Lock lock = myLock.readLock();
CacheValues cv = null;

try{
lock.lock();
cv = cache.getCacheValues(); //returns null on the first pass...

}finally{
lock.unlock();
} // exception thrown here

if(cv == null){
refreshCache(); //submits SOAP request to set the xml cache values
}

...
}

最佳答案

使用反射并使用 java.lang.reflect.Method 进行调用时,会发生 InvocableTargetException。代理类或其他拦截、检测类可能会发生这种情况。

当调用时发生异常,该异常被包装在 InvocableTargetException 中,您可以使用 getCause() 或查看堆栈跟踪来获取原始异常。

关于java - 预期的空指针导致意外的 InvokingTargetException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18447693/

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