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

nerd_x 2014-05-24 07:14:27
Java的异常处理try catch finally
都说一定要在finally块中关闭资源,可是就算没有finally{},发生异常后catch{}块后的语句还是会运行,完全可以把finally语句块中的内容拿出来?
...全文
544 9 打赏 收藏 转发到动态 举报
写回复
用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语句块中的内容是一定会被执行的
说明:解压后要注意把文件属性修改一下,解锁即可用 目录表 前言 本书的读者 本书的由来 本书目前的状况 官方网站 约定条款 欢迎给我反馈 值得思考的一些东西 1. 介绍 简介 Python的特色 概括 为什么不使用Perl? 程序员的话 2. 安装Python Linux和BSD用户 Windows®用户 概括 3. 最初的步骤 简介 使用带提示符的解释器 挑选一个编辑器 使用源文件 输出 它如何工作 可执行的Python程序 获取帮助 概括 4. 基本概念 字面意义上的常量 数 字符串 变量 标识符的命名 数据类型 对象 输出 它如何工作 逻辑行与物理行 缩进 概括 5. 运算符与表达式 简介 运算符 运算符优先级 计算顺序 结合规律 表达式 使用表达式 概括 6. 控制流 简介 if语句 使用if语句 它如何工作 while语句 使用while语句 for循环 使用for语句 break语句 使用break语句 continue语句 使用continue语句 概括 7. 函数 简介 定义函数 函数形参 使用函数形参 局部变量 使用局部变量 使用global语句 默认参数值 使用默认参数值 关键参数 使用关键参数 return语句 使用字面意义上的语句 DocStrings 使用DocStrings 概括 8. 模 简介 使用sys模 字节编译的.pyc文件 from..import语句的__name__ 使用模的__name__ 制造你自己的模 创建你自己的模 from..import dir()函数 使用dir函数 概括 9. 数据结构 简介 列表 对象与类的快速入门 使用列表 元组 使用元组 元组与打印语句 字典 使用字典 序列 使用序列 参考 对象与参考 更多字符串的内容 字符串的方法 概括 10. 解决问题——编写一个Python脚本 问题 解决方案 版本一 版本二 版本三 版本四 进一步优化 软件开发过程 概括 11. 面向对象的编程 简介 self 类 创建一个类 对象的方法 使用对象的方法 __init__方法 使用__init__方法 类与对象的变量 使用类与对象的变量 继承 使用继承 概括 12. 输入/输出 文件 使用文件 储存器 储存与取储存 概括 13. 异常 错误 try..except 处理异常 引发异常 如何引发异常 try..finally 使用finally 概括 14. Python标准库 简介 sys模 命令行参数 更多sys的内容 os模 概括 15. 更多Python的内容 特殊的方法 单语句 列表综合 使用列表综合 在函数中接收元组和列表 lambda形式 使用lambda形式 exec和eval语句 assert语句 repr函数 概括 16. 接下来学习什么? 图形软件 GUI工具概括 探索更多内容 概括 A. 自由/开放源码软件(FLOSS) B. 关于本书 后记 关于作者 关于译者 关于简体中文译本 C. 修订记录 时间表 术语表 表格 5.1 运算符与它们的用法 5.2 运算符优先级 15.1 一些特殊的方法 例子 3.1 使用带提示符的Python解释器 3.2 使用源文件 4.1 使用变量和字面意义上的常量 5.1 使用表达式 6.1 使用if语句 6.2 使用while语句 6.3 使用for语句 6.4 使用break语句 6.5 使用continue语句 7.1 定义函数 7.2 使用函数形参 7.3 使用局部变量 7.4 使用global语句 7.5 使用默认参数值 7.6 使用关键参数 7.7

62,614

社区成员

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

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