异常处理的finally语句块有什么用?

nerd_x 2014-05-24 07:14:27
Java的异常处理try catch finally
都说一定要在finally块中关闭资源,可是就算没有finally{},发生异常后catch{}块后的语句还是会运行,完全可以把finally语句块中的内容拿出来?
...全文
566 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
童去 2014-05-24
  • 打赏
  • 举报
回复
我觉得是为了保证可读性才这么设计的
nerd_x 2014-05-24
  • 打赏
  • 举报
回复
引用 7 楼 zhao9tian 的回复:
首先,楼主如果你必须能保证 catch掉try的一切异常。但实际上很多时候并不是这样,好比我做sql插入 要catch sqlException,但因为一些原因,会出现runtime异常,这时候你的catch就抓不住了。而final就可以走。 应用场景,db rollback,打log,算method调用时间等等 其次,try 可以和finally配合用,不需要catch的。 应用场景 打log,计算method调用时间等。
这样啊! 明白了 。 非常感谢
菜鸟大明 2014-05-24
  • 打赏
  • 举报
回复 1
首先,楼主如果你必须能保证 catch掉try的一切异常。但实际上很多时候并不是这样,好比我做sql插入 要catch sqlException,但因为一些原因,会出现runtime异常,这时候你的catch就抓不住了。而final就可以走。 应用场景,db rollback,打log,算method调用时间等等 其次,try 可以和finally配合用,不需要catch的。 应用场景 打log,计算method调用时间等。
姜小白- 2014-05-24
  • 打赏
  • 举报
回复
引用 5 楼 geek_x 的回复:
这个我知道,但是如果没有finally语句块,下面的语句也会被执行的,finally的意义好像就没有必要了 。 关闭操作我想放在catch后面也可以吧 就是普通的语句快里
finally 主要是在try块发生异常时,进行一些资源的关闭工作。 如果try块发生异常,异常直接到catch里面,这时就需要到finally里面去关闭资源。
nerd_x 2014-05-24
  • 打赏
  • 举报
回复
这个我知道,但是如果没有finally语句块,下面的语句也会被执行的,finally的意义好像就没有必要了 。 关闭操作我想放在catch后面也可以吧 就是普通的语句快里
日知己所无 2014-05-24
  • 打赏
  • 举报
回复
比如try里打开文件,并往里面写入东西 打开时OK,写入时发生异常了 这个时候应该在catch里做异常处理,比如写一些log或者弹出一些对话框来 由于无论是否发生异常,都应该关闭文件 所以把文件关闭处理,写在catch里就不太合适了 应该放到finally里
nerd_x 2014-05-24
  • 打赏
  • 举报
回复
这个我知道,但是如果没有finally语句块,下面的语句也会被执行的,finally的意义好像就没有必要了 谢谢你回答我!
什么都不能 2014-05-24
  • 打赏
  • 举报
回复 1
希望catch块中没有抛异常的代码,希望catch块抛异常的代码不会影响资源的关闭。
Gansuper7012 2014-05-24
  • 打赏
  • 举报
回复
finally语句块中的内容是一定会被执行的

62,634

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧