捕獲java反射執行方法丟擲的異常
阿新 • • 發佈:2019-02-07
一般在業務開發時需要向上層拋異常寫法如下:
public void A() throws Exception{
throw new Exception();
}
public void B(){
try{
A();
}catch(Exception e){
//具體處理異常
}
}
但是如果是通過反射呼叫的A方法那麼如果直接catch異常類Exception
會返回null,所以應該用如下方法捕獲:
public String handleException() {
String msg = null;
try {
Object o = Class.forName("xxx.xxx").newInstance();
o.getClass().getMethod("").invoke(o);
} catch (Exception e) {
if (e instanceof InvocationTargetException) {
Throwable targetEx =((InvocationTargetException)e).getTargetException();
if (targetEx != null ) {
msg = targetEx.getMessage();
}
} else {
msg = e.getMessage();
}
}
return msg;
}