2014-02-09 54 views
1

我有一堆Java方法,可以根據需要進行修改。讓我們稱這組方法爲B.避免在每個調用站點嘗試/捕獲,而選擇一個地方

然後我在B.調用方法的一些自動生成的Java代碼,讓我們把這個代碼A.

在B代碼調用其他一些汽車的方法生成的代碼。讓我們稱這個代碼爲C.

所以調用流程是:A→B→C,其中我只能修改B方法。

的C方法可以拋出,我要趕在B.

我的異常處理是爲所有的C方法相同的異常。

我可以在B調用C方法的每個調用站點上覆制我的try-catch塊。但是我有數百種方法,所以我想在一個地方保留常見的異常處理。

一個想法是將C調用放入lambdas中,然後將該lambda傳遞給可以在try-catch塊中執行lambda的通用調用(lambda)方法。

還有其他想法嗎?

問候 馬克

+0

是否存在多個線程? – Jack

+1

Java在Java 8之前不會有lambda表達式。您可以使用[匿名類](http://docs.oracle.com/javase/tutorial/java/javaOO/anonymousclasses.html),但這可能會冗長因爲將C調用包裝成try-catch塊,調用cacth塊中的常用方法,除非您有幾個不同的catch塊。 –

+0

當然可以。讓我解決這個問題。 –

回答

0

使用lambda表達式是OK,不過,那麼你不應該忘了每次使用的lambda表達式。由許多程序員開發的項目可能會產生問題,因爲每個程序員都應該意識到這一點。

另一個解決方案可以是Aspect Oriented Programming。你將需要使用一些框架,例如Guice,Spring或其他。

在AOP的情況下,try-catch塊將在運行時自動應用。 (如果你當然設置了擴展點和攔截器。)可能有一些AOP工具會在編譯時改變字節碼。

相關問題