【发布时间】:2019-11-25 09:14:24
【问题描述】:
我有一个与控制结构纠缠在一起的方法。它有多种退出方式。在离开方法之前,我需要做一些最后的处理。与其在每次退出之前重复相同的逻辑或在方法中重构该逻辑并多次调用它,不如将其留在 finally 块中似乎很方便。它真的是 finally 的合法使用还是我在滥用它?
【问题讨论】:
-
如果你的程序应该例如退出(ThreadDeath),您的业务逻辑被执行。我建议您在此之后捕获异常并执行您的业务逻辑。
-
我建议重构整个事情,这样它就不会像你说的那么复杂。
-
我看不出有什么问题。确保 finally 中的代码不会引发任何异常,否则您可能也需要在 finally 中使用 try 块
-
视情况而定。如果你在一个单一的控制结构中有这么多的纠缠,那么它很可能缺少重构。
-
另外,这取决于它对任务的关键程度:请记住,
finally不能保证仅仅因为断电、人们绊倒电源线、VM 崩溃、kill-9 等而启动所有可能发生的真实事情。
标签: java dry business-logic finally