Path: csiph.com!eternal-september.org!feeder.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: Cecil Westerhof Newsgroups: comp.lang.java.programmer Subject: Re: Not closing a SQL(ite3) connection Date: Sat, 12 Aug 2017 12:57:40 +0200 Organization: Decebal Computing Lines: 45 Message-ID: <87bmnlyrx7.fsf@munus.decebal.nl> References: <87a839um2q.fsf@munus.decebal.nl> <874lte1pdj.fsf@munus.decebal.nl> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: mx02.eternal-september.org; posting-host="a1c8c080b2cb6129343ef73ef98e693f"; logging-data="27839"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/qqGh/PvBC47/h/DUzhtw+fErhzkrCdX0=" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux) X-Homepage: http://www.decebal.nl/ Cancel-Lock: sha1:Wj75o734pXpPL5dstzpnLanus9w= sha1:IVNQqHBxN3aUbemnf5d0tVfRmd8= Xref: csiph.com comp.lang.java.programmer:37142 Andreas Leitgeb writes: >>> try { >>> stmt.close(); >>> resultSet.next(); >>> resultSet.close(); >>> } catch (SQLException e) { >>> errorMsg += "Could not close ResultSet.\n"; >>> System.out.println(errorMsg); >>> } > > Also, it might be better to actually add the exception information > rather than a hardcoded string to errorMsg. Unless you really ran it > in the debugger and examined e, you wouldn't know, what really > threw the exception. This was only for testing purposes. My real code has become: @Override public void close() throws SQLException { boolean closedResultSet = false; try { Statement stmt = resultSet.getStatement(); resultSet.close(); closedResultSet = true; stmt.close(); } catch (SQLException e) { if (closedResultSet) { SQLException extException = new SQLException("Could not close Statement after closing ResultSet."); extException.addSuppressed(e); e = extException; } throw e; } } The String will be done with a variable of-course. Beside that: is the code OK, or can it be improved? -- Cecil Westerhof Senior Software Engineer LinkedIn: http://www.linkedin.com/in/cecilwesterhof