2013-05-08 80 views
0

可以說我有上百個教學班,這種方法的簽名,這是該級別中唯一的出入境法:
怎麼辦共同異常處理

public Map<String,Object> doSome(Map arg1, map arg2) 

和方法體中有一試/ catch塊。 catch塊捕獲異常並重新拋出一個自定義異常。此前該計劃將放棄在catch塊。現在我需要能夠返回一個具有類似鍵值的Map(「Exception」,「有些在這個類中變得很糟糕」)。一種方法是在這個doSome方法中創建一個額外的方法(並將當前代碼推入新的方法),並用try/catch包圍此方法調用,並在catch塊中捕獲自定義異常並編寫通用方法填充返回的地圖
對於所有這100多個課程,最佳實現方法是什麼?
我想知道是否可以使用Spring AOP來實現這樣的事情?但是我遇到的大多數春季建議都不允許返回值(意味着控制不會回到拋出異常的位置)。
如果有人能指出我具體的例子,那將會很棒。

回答

1

這聽起來像是一些可以用父類提供的某些功能來解決的問題。

讓你的每個100個類(真的,100?!)擴展一個抽象父類。有父類定義doSomething方法:

public Map<String,Object> doSome(Map arg1, Map arg2) { 

    try { 
    doSomething(arg1, arg2); 
    } catch (Exception e) { 
    // clever handling here 
    } 
} 

確保doSomething()方法被定義爲ExceptionHandler的抽象方法。當然,更好的方法名稱是值得歡迎的。

每個子類將實現它們自己的變化doSomething()

+0

多一點100 *真的*。 :)所有這些類都是由外部框架使用/調用的代碼庫的一部分。所以這些類已經擴展了這個框架的類。所以這不是一個選項 – happybuddha 2013-05-08 15:22:04

+0

@happybuddha父類是否不擴展框架類? – 2013-05-08 18:54:35

+0

可悲的沒有。這是一個現有的應用程序(令人驚訝地終止catch塊中的所有內容),並且這種更改的靈活性較低。 – happybuddha 2013-05-08 19:33:44