使用try搭配空finally块且无catch块的写法有实际作用吗?
空finally块的try-finally结构用途分析
你遇到的代码片段如下:
try { //some code that might throw exception } finally { }
这种结构在绝大多数场景下没有实际运行价值:
- 没有catch块意味着try块中抛出的异常会完全原样向上层调用栈抛出,和没有外层try包裹的逻辑完全一致
- 空finally块没有执行任何清理、释放资源的操作,无法起到try-finally结构原本的异常兜底执行逻辑的作用
仅有的两种可能存在的非运行价值
- 占位用途:开发人员计划后续在finally块中补充资源释放、状态回滚等兜底逻辑,暂时只写了结构还没实现具体内容,属于未完工的代码
- 绕过静态检查的特殊技巧:极少数老旧的静态代码扫描工具、编译器存在规则缺陷,有人会用这种无意义的结构绕过特定的代码告警,这种写法属于反模式,非常不推荐使用
处理建议
直接删除外层的try-finally包裹即可,原有代码的运行逻辑、异常表现不会发生任何变化,还能降低代码的冗余度,避免给后续维护的人造成误解。
内容的提问来源于stack exchange,提问作者Saurabh
相关产品推荐
相关产品推荐

