您的位置:首页 > 其它

InvocationTargetException 浅析

2015-07-08 16:18 330 查看
转自:http://blog.csdn.net/simpleit/article/details/5415066

InvocationTargetException 异常是在 java.lang.reflect 包中, 所以该异常的产生和反射有关.

[java] view
plaincopy

package org.simpleit.test;

public class Calculator {

public int div(int i, int j){

return i / j;

}

}

[java] view
plaincopy

package org.simpleit.test;

public class TestCalculator {

public void testDiv(Calculator calculator, Integer a, Integer b){

System.out.println(calculator.div(a, b));

}

}

[java] view
plaincopy

@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);

}

testDiv.invoke(testCalculator, calculator, 12, 0); 行代码会抛出 InvocationTargetException 异常, 但若直接

testCalculator.testDiv(calculator, 12, 0); 则抛出的却是 java.lang.ArithmeticException 异常.

结论: 在利用 Method 对象的 invoke 方法调用目标对象的方法时, 若在目标对象的方法内部抛出异常, 会抛出 InvocationTargetException 异常, 该异常包装了目标对象的方法内部抛出异常, 可以通过调用 InvocationTargetException 异常类的的 getTargetException() 方法得到原始的异常.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: