2016-11-17 103 views
0

我已經定義了兩個AfterThrowing通知來處理具有相同切入點的異常。處理特定的異常類型

@AfterThrowing(pointcut="...", throwing="ex") 
public void method1(Exception ex) {} 


@AfterThrowing(pointcut="...", throwing="ex") 
public void method2(GatewayException ex) {} 

如果異常是一個GatewayException,我有辦法阻止泛型方法1被執行嗎?

任何想法不勝感激

Ç

回答

0

這將是最容易檢查的建議體內異常的實例,並提前返回,如果它是更具體的異常類型:

@AfterThrowing(pointcut="...", throwing="ex") 
public void method1(Exception ex) { 
    if (ex instanceof GatewayException) { 
     return; 
    } 
    // handle the more generic Exception case 
} 


@AfterThrowing(pointcut="...", throwing="ex") 
public void method2(GatewayException ex) { 
    // handle the more specific GatewayException 
} 

我知道你期望基於一些AspectJ語言構造的解決方案,但事情是,沒有這樣的構造。

+0

是的,我希望避免instanceof,但我認爲你是對的。 – Cathal