簡體   English   中英

預期的空指針會導致意外的InvocationTargetException

[英]Expected null pointer causing an unexpected InvocationTargetException

XML文件被用作臨時緩存,以通過SOAP請求存儲臨時值(多個配置值)。 多個線程將使用此文件,因此如果文件已經更新,我不想寫入該文件。 在第一遍代碼中,我希望緩存返回null,然后文件將被更新。 但是,退出finally塊時出現InvocationTargetException ,並且程序失敗。 我不明白為什么空CacheValues對象會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
         }

   ...
}

使用反射時會發生InvocationTargetException,並使用java.lang.reflect.Method進行調用。 這可能在代理類或其他偵聽,檢測類中發生。

在調用時,發生一個異常,該異常包裝在InvocationTargetException中,並且可以使用getCause()或查看堆棧跟蹤來獲取原始異常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM