1. 程式人生 > >java獲取異常資訊(需要用e.getCause()的情況)

java獲取異常資訊(需要用e.getCause()的情況)

java如何採用反射機制來呼叫方法,

若要獲取異常資訊

Java程式碼 

 收藏程式碼

  1. try{  
  2. Method m = ...;  
  3. m.invoke(...);//反射呼叫方法   
  4. }catch(Exception e){  
  5. System.out.println(e.getMessage);//獲取不到異常資訊  
  6. }  

 這樣是不行的。

應該這樣:

Java程式碼 

 收藏程式碼

  1. try{  
  2. Method m = ...;  
  3. m.invoke(...);//反射呼叫方法   
  4. }catch(Exception e){  
  5. System.out.println(e.getCause().getMessage);//獲取異常資訊  
  6. }  

java有一個異常鏈,一個異常可能是由於另一個異常引起的。

採用反射機制,我們捕捉到的異常是java.lang.reflect.InvocationTargetException,

這個異常的message為null

這個異常是我們的方法所丟擲的異常引起的。

故要獲取方法真正的異常,

應該用e.getCause()