避免在每个呼叫站点尝试/捕获,而倾向于单个位置



我有一堆Java方法,我可以随心所欲地修改。我们把这组方法称为 B。

然后我有一些自动生成的 Java 代码,可以调用 B 中的方法。让我们为 A 调用此代码。

B 代码调用其他一些自动生成的代码中的方法。让我们将此代码称为 C。

所以调用流是:A -> B -> C,其中我只能修改 B 方法。

C 方法可能会抛出我想在 B 处捕获的异常。

我的异常处理对于所有 C 方法都是相同的。

我可以在调用 C 方法的 B 中的每个调用站点复制我的 try-catch 块。但是我有数百种方法,因此我想将常见的异常处理保存在一个地方。

一个想法是将 C 调用放在 lambda 中,然后将 lambda 传递给一个通用的 invoke(lambda) 方法,该方法可以在 try-catch 块中执行 lambda。

还有其他想法吗?

问候马克

不过,使用 lambda 是可以的,那么你不应该忘记每次都使用这些 lambda。对于由许多程序员开发的项目来说,这可能是有问题的,因为每个程序员都应该意识到这一点。

另一种解决方案可以是面向方面的编程。为此,您需要使用一些框架,例如Guice,Spring或其他东西。

在 AOP 的情况下,try-catch 块将自动应用于运行时。(当然,如果您相应地设置扩展点和拦截器。可能有一些AOP工具可以在编译时更改字节码。

相关内容

最新更新