为了账号安全,请及时绑定邮箱和手机立即绑定

异常检查不写finally而是写在catch 后可否?

异常检查不写finally而是写在catch 后可否?

qq_杀意隆_0 2018-04-08 11:13:11
try{ }catch(Exception e){ }finally{     //finally相关处理语句 }try{ }catch(Exception e){ } //finally相关处理语句以上两种方式有何不同?
查看完整描述

5 回答

已采纳
?
风月理不平我

TA贡献5条经验 获得超1个赞

finally是一定执行的,一半用来关闭资源,即使你catch里面截断了代码也不影响finally执行

查看完整回答
反对 回复 2018-04-08
?
qq_杀意隆_0

TA贡献93条经验 获得超29个赞

来自知乎: finally块是保证肯定会被执行,哪怕你在try块或者catch块了写了return。

查看完整回答
1 反对 回复 2018-04-08
?
yanrun

TA贡献317条经验 获得超240个赞

finally通常用于释放资源,比如你在try中连接了数据库,但是出错抛异常了,如果是第一种的话,可以把关闭数据库连接的语句写在finally中,因为finally一定会执行所以可以保证数据库的连接会被关闭,而第二种则不能保证数据库连接会被关闭

查看完整回答
1 反对 回复 2018-04-08
  • qq_杀意隆_0
    qq_杀意隆_0
    为什么第二种则不能保证数据库连接会被关闭? catch语句块执行完之后不就继续执行下面的语句吗?
  • yanrun
    yanrun
    因为不在finally里关闭的话还需要在try-catch之外再判断数据库连接是否关闭,而此时或者在此之前都有可能发生异常
  • 5 回答
  • 0 关注
  • 2440 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信