finally {
if (conn != null){ 

conn.close();

}
}
在finally中如果直接写成这样就会报错,必须加上try/catch才可以,就像这样finally {
if (conn != null){ 

try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
}
为什么必须要try/catch呢

解决方案 »

  1.   

    某些严重的错误也会关闭 Connection 对象,会跑出SqlException异常
    看看api上面写的很清楚
      

  2.   

    conn.close(); 也是很有可能抛异常的当然需要再try catch
      

  3.   

    finally只是处理最后要做的事情,链接的关闭还是可能会出现异常的吧,有异常还是需要捕获的,
    。坐等楼下,更精彩的回答
      

  4.   

    void close()
               throws SQLException立即释放此 Connection 对象的数据库和 JDBC 资源,而不是等待它们被自动释放。 
    在已经关闭的 Connection 对象上调用 close 方法是无操作 (no-op)。 注:Connection 对象在进行垃圾回收时被自动关闭。某些严重的错误也会关闭 Connection 对象。 
    抛出: 
    SQLException - 如果发生数据库访问错误
    API文档中写得很清楚,会抛出SQLException 异常,所以必须捕获
      

  5.   

    你有看过这种写法?
    finally{
    String str = "abc";
    };try{}
    catch(Exception ex){]
    finally{}
    或者是
     try{
          
         }finally{
          
         }
    是一套的
    语法问题吧。