day17 9.关闭资源与异常处理】的更多相关文章

Java程序跟任何外部设备进行连接之后,都要把连接断开,把资源释放掉.Connection是一个重量级资源,Connecton占内存,Connection的获取是比较消耗资源和内存的.finally是一定会被执行,刚才玩的JDBC代码,异常都没处理直接抛出异常了,这是不负责任的行为. package cn.itcast.jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSe…
这是一篇有趣的帖子 原文链接: http://bbs.csdn.net/topics/90070457 楼主: C++中没有finally,那么应该在哪里关闭资源? C++的try{}catch(){},为什么没有finally{}块来释放资源?如类中的一个方法,局部变量File * file=NULL;Try{file=fopen(“aaa.txt”,”r”);然后执行一些操作.}最后fclose(file);假如,file操作时发生异常,需要关闭.对于Java来说,是在finally{}块中…
这是一篇有趣的帖子 原文链接: http://bbs.csdn.net/topics/90070457 楼主: C++中没有finally,那么应该在哪里关闭资源? C++的try{}catch(){},为什么没有finally{}块来释放资源?如类中的一个方法,局部变量File * file=NULL;Try{file=fopen(“aaa.txt”,”r”);然后执行一些操作.}最后fclose(file);假如,file操作时发生异常,需要关闭.对于Java来说,是在finally{}块中…
在网上看到一篇关于关闭资源的正确方式:http://blog.csdn.net/bornforit/article/details/6896775 该博文中的总结: (1)使用finally块来关闭物理资源(非托管资源),保证关闭操作始终会被执行: (2)关闭每个资源之前首先保证引用该资源的引用变量不为null: (3)为每个物理资源使用单独的trycatch块关闭资源,保证关闭资源时引发的异常不会影响其他资源的关闭. 在资源过多的时候,我们要在finally块中写很多的非空判断.以及try-c…
在实际开发中,经常需要在程序中打开一些物理资源,如数据库连接.网络连接.磁盘文件等,打开这些物理资源之后必须显式关闭,否则将会引起资源泄漏. JVM的垃圾回收机制不会回收这些资源,垃圾回收机制属于Java内存管理的一部分,它只是负责回收堆内存中分配出来的内存,至于程序中打开的物理资源,垃圾回收机制是无能为力的. 为了正常关闭程序中打开的物理资源,应该使用finally块来保证回收. 下面程序示范了常见的数据库资源. importjava.sql.Connection; importjava.sq…
package com.util; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; /** * @className: ConnUtil.java * @classDescription: 数据库连接工具类——包含取得连接和关闭资源 * @fun…
java7增强的try语句关闭资源 传统的关闭资源方式 import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; class Student implements Serializable { private String name; public Student(String name)…
对finally中关闭资源是否还要使用try...catch老是感到迷惑,现在存个例子,省的忘了 public StringBuilder readTxtFile(File file){ StringBuilder sBuilder = new StringBuilder(); InputStreamReader isr = null; BufferedReader br = null; try { if (file.isFile() && file.exists()) { isr = n…
背景: 在Java编程过程中,如果打开了外部资源(文件.数据库连接.网络连接等),我们必须在这些外部资源使用完毕后,手动关闭它们.因为外部资源不由JVM管理,无法享用JVM的垃圾回收机制,如果我们不在编程时确保在正确的时机关闭外部资源,就会导致外部资源泄露,紧接着就会出现文件被异常占用,数据库连接过多导致连接池溢出等诸多很严重的问题. 传统关闭资源方式(一般JDK版本低于1.7) /** * 根据路径创建文件,如果路径文件夹不存在,就创建 * @param filePath * @return…
案例1: 现象: 同事做本地txt数据切分然后处理,发现删除本地临时文件目录中的文件时,有时成功,有时删除完了发现文件还在.代码各处都不报错,且各种日志打印正常. 解决: 最后发现,是业务逻辑代码中有一处FileInputStream流读取文件后,没有关流,导致的. -------- 案例2: 现象: 同事往远程FTP服务器上上传txt文件,在两处业务逻辑中调用同一个上传工具类方法(此方法为他自己写的),发现一个可以成功上传,而另一处调用上传完FTP上没有文件. 解决: 各种折腾,最后发现,因为…