内容提要:
• finally从句里放资源回收类代码
• 尤其得当心的RuntimeException
• 通过异常处理机制,尽可能小地缩小影响范围
• 异常处理的重要准则
finally从句的特性
• 不管是否发生异常,不管发生何种异常,finally从句代码会被执行
• try和catch里有return,finally从句也会被执行
• 除非有System.exit(0)语句,finally从句才不会被执行
运行期异常会中断程序
• 运行期异常(RuntimeException)无需用try…catch包含
• 一旦出现,会终止程序 • 常见的有空指针异常,除0异常
异常处理的准则
• 在finally从句里释放资源;
• 尽可能地缩小try语句的监控范围,比如某方法有100行,其中第4到 第20行代码用来连接数据库,第50到90行代码用来连接网络,不好 的做法是,直接用一个try来包围第4到第90行的代码;
异常处理的准则
• 先用专业的异常类来处理,最后再用Exception异常来兜底
• 在catch从句里,尽可能地恢复异常,或尽可能详细地输出异常信息, 别仅仅抛出异常了事,如下给出一种不好的做法
尽可能小地缩小因异常而导致的影响范围
• 比如有两个平行的业务,相互间不该影响,错误的写法
• 正确的写法
尽可能小地缩小因异常而导致的影响范围
• 从csv文件里读100条数据,随后依次插入数据库,如果其中一条插入 语句出错,将不能影响其它的插入动作,错误的做法如下。
• 正确的写法
总结
1. finally从句里应该放释放资源的代码
2. 捕获可能出现的运行期异常,以避免程序终止