java 类中多个方法的单个 Catch 块

Bik*_*ash 1 java optimization exception class

我有一个带有用于处理 MemCache 请求的静态方法的类,它具有带有不同参数的不同方法。

每当在该类中调用某个方法时,我想增加 TotalRequest 计数器,如果类内的任何方法发生异常,我想增加失败计数器。有什么办法可以做到吗?

如果自然静态有一些问题,请告诉我?而且它应该是一个高效的。

Ben*_*oît 5

我会使用AOP。如果您使用Guice或 Maven,那么在您的 beans 周围放置就很容易。您将声明一个拦截器,Guice 或 Maven 将包装您的方法。

还有AspectJ,不过我没用过。

最后,您可以将调用包装在调用者方法中。对于 Java 8 和 lambda,它会是这样的:

protected <T> T callWithTrace(Supplier<T> fn) throws Exception {
  //some code before the call
  try {
     T output=fn.get();
     //code after normal exec
     return output;
  }
  catch(Exception e) {
     //code in case of error (increase counter??)
     throw e;
  }
}

void someOtherMethod() {
   Object ret = callWithTrace({ () -> callToYourDangerousMethod()});
   Object ret = callWithTrace({ () -> callToAnotherDangerousMethod()});
}
Run Code Online (Sandbox Code Playgroud)

在 Java 7 中,您还可以使用匿名内部类来做到这一点,但它很难阅读。