背景
在做单元测试时候,在一个私有方法中抛出了自定义异常。使用method.invoke()
之后,使用try{} catch (自定义异常){}
进行捕获,竟然没有捕获到,最终定位到原因是:如果方法中直接抛出异常,通过反射进行调用时,会抛出InvocationTargetException异常
代码
自定义异常
public class MyException extends RuntimeException {
String msg;
MyException() {
super();
}
MyException(String msg) {
super(msg);
this.msg = msg;
}
}
业务代码
public class Test {
public static void main(String[] args) throws Exception {
Test t = new Test();
Class clz = t.getClass();
Method addMethod = clz.getDeclaredMethod("divde", int.class, int.class);
System