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

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

/ 猿问

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

qq_杀意隆_0 2018-04-08 11:13:11
try{

}catch(Exception e){

}finally{
    //finally相关处理语句
}
try{

}catch(Exception e){

}
//finally相关处理语句

以上两种方式有何不同?

查看完整描述

3 回答

已采纳
?
风月理不平我

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

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

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

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

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

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

添加回答

回复

举报

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