![]() |
1
160
几年前,我真的很难找到一个由这个引起的bug。代码类似于:
正如其他人所说,虽然根据Java规范从finally块返回是合法的,但这是一件坏事,不应该这样做。 |
![]() |
2
94
你提供的例子足以说明 不 即使有一个设计得更好的例子,也要考虑开发人员以后必须维护代码,谁可能不知道这些细微之处。那个可怜的开发人员可能就是你。。。。 |
![]() |
3
23
如果使用-Xlint:finally,javac将在finally中发出返回警告。最初javac没有发出警告——如果代码有问题,它应该无法编译。不幸的是,向后兼容意味着无法禁止意料之外的巧妙愚蠢。 可以从finally块抛出异常,但在这种情况下,所展示的行为几乎肯定是您想要的。 |
![]() |
4
13
添加控制结构并返回到finally{}块只是“just-because-you-can”滥用的另一个例子,这种滥用几乎散布在所有开发语言中。Jason正确地指出,这很容易成为维护的噩梦——反对函数提前返回的论点更适用于“延迟返回”的情况。
影响函数返回的任何内容都应该位于try{}块中。即使您有一种方法,通过该方法检查外部状态,执行一个耗时的操作,然后再次检查该状态,以防该状态变得无效,您仍然希望在try{}内进行第二次检查-如果它最终位于{}内,并且长时间操作失败,那么您将不必要地再次检查该状态。 |
![]() |
5
6
输出:
问题:对我来说,一个有趣的问题是Groovy如何处理隐式回报。在Groovy中,只需在末尾留下一个值(不返回),就可以从方法“返回”。如果取消注释 运行线程。删除(..) |
![]() |
6
2
从内部返回
finally块中的return语句将导致丢弃try或catch块中可能抛出的任何异常。
JLS 14.17 -return语句总是突然完成。 |