InvocationTargetException 淺析

InvocationTargetException 異常是在 java.lang.reflect 包中,  所以該異常的產生和反射有關.

package org.simpleit.test;  
  
public class Calculator {  
  
    public int div(int i, int j){  
        return i / j;  
    }  
      
}
package org.simpleit.test;  
  
public class TestCalculator {  
      
    public void testDiv(Calculator calculator, Integer a, Integer b){  
        System.out.println(calculator.div(a, b));  
    }  
}
@SuppressWarnings("unchecked")  
@Test  
public void testInvocationTargetException() throws Exception{  
  
        TestCalculator testCalculator = new TestCalculator();  
    Calculator calculator = new Calculator();  
          
    Class clazz = TestCalculator.class;  
    Method testDiv = clazz.getDeclaredMethod("testDiv", Calculator.class,   
                Integer.class, Integer.class);  
    //以下代碼會拋出 InvocationTargetException 異常  
    testDiv.invoke(testCalculator, calculator, 12, 0);  
}

estDiv.invoke(testCalculator, calculator, 12, 0); 行代碼會拋出 InvocationTargetException 異常, 但若直接testCalculator.testDiv(calculator, 12, 0);  則拋出的卻是 java.lang.ArithmeticException 異常.

 

    結論: 在利用 Method 對象的 invoke 方法調用目標對象的方法時, 若在目標對象的方法內部拋出異常, 會拋出 InvocationTargetException 異常, 該異常包裝了目標對象的方法內部拋出異常, 可以通過調用 InvocationTargetException 異常類的的 getTargetException() 方法得到原始的異常.



本文轉自:http://blog.csdn.net/simpleit/article/details/5415066


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章