数据库操作、IO操作的资源没有及时释放

来源:互联网 发布:app代驾软件 编辑:程序博客网 时间:2024/05/11 17:02

错误案例

public class ReleaseRes{    public void releaseDB ()    {        Connection conn = null;        APLResultSet rs = null;        String sql= "";        try        {            conn = DB.getConnection();            rs = DB.query(sql);            if (rs.next())            {                return rs.getString("currentdate");            }            else            {                return DateTool.getCurrentDate(pattern);            }             Conn.close();  //错误1        }        catch (DBException e)        {            ...................        }        //错误2     }         public void releaseIO (File file)    {        StringBuffer sb = null;        BufferedReader in = null;        try        {            in = new BufferedReader(new FileReader(file));            sb = new StringBuffer();            for (String line; (line = in.readLine()) != null;)            {                sb.append(line + "\r\n");            }        }        catch (IOException ex)        {            Throw ex;        }        //错误3    }

错误分析

错误1:连接没有在finally正确释放,会出现异常时导致在运行一段时间后,系统由于连接池满载而崩溃。错误2:资源APLResultSet没有正确释放错误3:IO资源没有正确释放,需要在finally中释放资源

对任何的数据库,IO等资源的操作完毕之后,都需要进行释放,假如不释放资源会被耗尽,导致系统崩溃。


正确用法

public class ReleaseRes{    public void releaseDB ()    {        Connection conn = null;        ResultSet rs = null;        String sql= "";        try        {            conn = DB.getConnection();            rs = DB.query(sql);            if (rs.next())            {                return rs.getString("currentdate");            }            else            {                return DateTool.getCurrentDate(pattern);            }                     }        catch (DBException e)        {            ...................        }        finally        {           conn.close();            rs.close();        }     }         public void releaseIO (File file)    {        StringBuffer sb = null;        BufferedReader in = null;        try        {            in = new BufferedReader(new FileReader(file));            sb = new StringBuffer();            for (String line; (line = in.readLine()) != null;)            {                sb.append(line + "\r\n");            }        }        catch (IOException ex)        {            Throw ex;        }        finally        {           in.close();         }    }

原创粉丝点击