Path: csiph.com!aioe.org!.POSTED!not-for-mail From: =?UTF-8?Q?Arne_Vajh=c3=b8j?= Newsgroups: comp.lang.java.programmer Subject: Re: Is this the way to work with try with resources Date: Tue, 8 Aug 2017 21:36:52 -0400 Organization: Aioe.org NNTP Server Lines: 44 Message-ID: References: <87poc6wb9n.fsf@munus.decebal.nl> NNTP-Posting-Host: PBuS014lhzVyHjLbXmo/ZQ.user.gioia.aioe.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit X-Complaints-To: abuse@aioe.org User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.2.1 Content-Language: en-US X-Notice: Filtered by postfilter v. 0.8.2 Xref: csiph.com comp.lang.java.programmer:37093 On 8/8/2017 9:25 PM, Arne Vajhøj wrote: > On 8/8/2017 7:26 AM, Cecil Westerhof wrote: >> When using with resources you ‘should’ always work with try with >> resources. At the moment I have something like the following code: >> private static void statistics() { >> try (Statement stmt = conn.createStatement()) { >> String format; >> >> try (ResultSet rsTotal = >> stmt.executeQuery(COUNT_TOTAL_PROV)) { >> final int count = rsTotal.getInt("no"); >> >> format = String.format("There are %%,%dd %%6s >> proverbs.%%n", String.format("%,d", count).length()); >> System.out.printf(format, count, "total"); >> } ... >> } catch (SQLException e) { >> System.err.printf("Error in statistics\n"); >> e.printStackTrace(); >> fatalError(""); >> } >> } >> >> It feels a bit long-winded. Is this the way to go, or is there a >> better way? > > That code looks like try with resource is intended to be used I would do it like that. If you absolutely want to make the code shorter no matter the cost, then just drop the try and do not put in anything else to call close. And then cross your fingers and pray that whoever implemented the JDBC driver(s) you are using did read the JDBC specs section stating that Statement close (called implicit in this case) will also close ResultSet for that Statement. I would not do that. Arne