我有一个负责记录操作的包装器,名为 OperationWrapper。其结构简单,如下:
public void runOperation(Operation o) throws Exception{
logOperationStarted();
o.execute();
logOperationFinished();
}
由于“o”操作可能会引发异常,因此logOperationFinished()
不会始终调用该方法,因此日志记录无法正确运行。
此外,调用该runOperation()
方法的各种组件都会处理这些异常。
为了确保它logOperationFinished()
始终运行,我实现了以下结构:
public void runOperation(Operation o) throws Exception{
logOperationStarted();
try{
o.execute();
}
catch(Exception e){
throw e;
}
finally{
logOperationFinished();
}
}
现在logOperationFinished()
总是运行,但我收到来自 IntelliJ 的警告:
立即重新抛出捕获的异常
报告立即重新抛出捕获的异常的任何捕获块,而不对其执行任何操作。这样 的catch块是不必要的或缺少错误处理。
在我看来,IntelliJ 在发出此警告时似乎没有考虑 finally 块。
我做错了什么还是有更好的方法来实现这一点?
谢谢。