gpt4 book ai didi

java - 立即重新抛出catch block 并使用finally

转载 作者:行者123 更新时间:2023-12-01 21:57:56 26 4
gpt4 key购买 nike

我有一个负责记录操作的包装器,名为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 的警告:

Caught exception is immediately rethrown
Reports any catch block where the caught exception is immediately rethrown, without performing any action on it. Such catch blocks are unnecessary or lack error handling.

对我来说,IntelliJ 在发出此警告时似乎没有考虑finally block 。

我做错了什么还是有更好的方法来实现这一目标?

谢谢。

最佳答案

是的,你不需要捕获

public void runOperation(Operation o) throws Exception{ 
logOperationStarted();
try{
o.execute();
}
finally{
logOperationFinished();
}
}

关于java - 立即重新抛出catch block 并使用finally,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29484162/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com