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);行コードは異常を放出するが、直接testCalculator.testDiv(calculator, 12, 0);投げたのはjavaです.lang.ArithmeticException異常
 
結論:Methodオブジェクトのinvokeメソッドを用いるターゲットオブジェクトのメソッドを呼び出す場合、ターゲットオブジェクトのメソッド内部に異常が投げ出されると、ターゲットオブジェクトをラッピングするメソッド内部に異常が投げ出され、InvocationTargetException異常クラスのgetTargetException()メソッドを呼び出すことで元の異常を得ることができる.
この文書は次のとおりです.http://blog.csdn.net/simpleit/article/details/5415066