2012-11-01 99 views
2

如果我使用method.invoke调用引发自定义异常的方法A.捕获此异常并在try catch周围的method.invoke中处理它的方法是什么?我能想到的唯一方法是捕获所有异常并检查异常类型;在method.invoke()中捕获自定义异常

try{ 
... 
method.invoke 
... 
} catch (A e) { 

} 

回答

3

尝试:

try { 
    method.invoke 
} catch (InvocationTargetException e) { 
    Throwable mainException = e.getCause(); 
    if (mainException instanceof .....) { 
    } 
} 

的InvocationTargetException是由该方法抛出的异常的包装。

在你的情况下,mainException将是A类型。

+0

或'try {throw e.getCause(); } catch(A a){}' – irreputable

+0

埃米尔是正确的,阅读Javadoc在哪些情况下抛出异常。显然,你需要处理任何检查的异常! :) – Muel