A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 CrazyProgram 于 2013-4-10 22:46 编辑

第一种方式:

  1. public static void free(ResultSet rs,Statement st,Connection conn){

  2. try{
  3. if(rs!=null){
  4. rs.close();
  5. }
  6. }catch(SQLException e){

  7. e.printStackTrace();

  8. }finally{
  9. try{
  10. if(st!=null){
  11. st.close();
  12. }
  13. }catch(SQLException e){

  14. e.printStackTrace();

  15. }finally{
  16. try{
  17. if(conn!=null){
  18. conn.close();
  19. //myDataSource.free(conn);
  20. }
  21. }catch(Exception e){

  22. e.printStackTrace();

  23. }

  24. }
  25. }
  26. }
复制代码
第二种方式:
  1. public static void close(ResultSet rs){
  2. if(rs!=null){
  3. try {
  4. rs.close();
  5. } catch (Exception e) {
  6. e.printStackTrace();
  7. }
  8. }
  9. }
  10. public static void close(Statement stmt){
  11. if(stmt!=null){
  12. try {
  13. stmt.close();
  14. } catch (Exception e) {
  15. e.printStackTrace();
  16. }
  17. }
  18. }
  19. public static void close(Connection conn){
  20. if(conn!=null){
  21. try {
  22. conn.close();
  23. } catch (Exception e) {
  24. e.printStackTrace();
  25. }
  26. }
  27. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

2 个回复

倒序浏览
一般开发中,最多使用的是第一种
这种方式有一个优势,就是,即便前面的rs或者st关闭的时候出现了异常,后面的conn仍然能够正常关闭,因为java的异常处理机制是,finally语句块中的代码,不管有没有异常,最终都会执行的.

而第二种方式的话,如果有一个发生异常,剩下的就不能正常关闭,这就是区别.
回复 使用道具 举报
胡国彬 发表于 2013-4-10 20:24
一般开发中,最多使用的是第一种
这种方式有一个优势,就是,即便前面的rs或者st关闭的时候出现了异常,后面的c ...

噢,那就是用第一种就可以了,第二种知道就可以了·~!谢了·
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马