我有一个用于处理MemCache请求的静态方法的类,它有不同的方法和不同的参数。
每当在该类中调用Some方法时,我想增加totalRequest Counter,如果在类中的任何方法中发生异常,我想增加失败的计数器。有没有办法做到这一点?
如果静态自然有一些问题,请告诉我?它应该是一个有效的。
答案 0 :(得分:4)
我会使用AOP。如果您使用Guice或Maven,那么很容易在您的bean周围放置。你将声明一个拦截器,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()});
}
使用Java 7,您也可以使用匿名内部类来完成它,但它很难阅读。