Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #37112

Re: Is this the way to work with try with resources

From Andreas Leitgeb <avl@logic.at>
Newsgroups comp.lang.java.programmer
Subject Re: Is this the way to work with try with resources
Date 2017-08-09 16:51 +0000
Organization A noiseless patient Spider
Message-ID <slrnoomfkk.o2q.avl@logic.at> (permalink)
References <87poc6wb9n.fsf@munus.decebal.nl> <87lgmtwels.fsf@munus.decebal.nl> <slrnoolmbl.o2q.avl@logic.at> <8760dxuhzl.fsf@munus.decebal.nl>

Show all headers | View raw


Cecil Westerhof <Cecil@decebal.nl> wrote:
> Andreas Leitgeb <avl@logic.at> writes:
>> Cecil Westerhof <Cecil@decebal.nl> wrote:
>>>     private static void statistics() {
>>>         try (ResultSet rsTotal  = executeQuery(COUNT_TOTAL_PROV);
>>>              ResultSet rsUnused = executeQuery(COUNT_UNUSED_PROV);
>>>              ResultSet rsUsed   = executeQuery(COUNT_USED_PROV)) {
>> and
>>>     private static ResultSet executeQuery(String query) throws SQLException {
>>>         return conn.createStatement().executeQuery(query);
>>>     }
>> So, if one of the queries fails, what will happen to the statements 
>> created so far?
>> Or, rather, what will *not* happen to them?
> If I interpreted try with resources correctly they are destroyed and
> nothing is done with them.

This claim is self-contradictory. They cannot be both, "destroyed" and
"nothing done with them" at the same time.

Anyway, I think, we're conflating two aspects here:
  1.) your app is a simple client tool, which wouldn't really need any
     error-handling with explicit cleanup at all. It could just System.exit()
     for any exception, and all cleanup will be cared for.
  2.) The discussion on how to do try-with-ressources *correctly*.

I'd prefer to stick with "2.)" and ignore the fact that your specific
task doesn't really demand correctness. Ok? (Otherwise there's no point
in participating in the discussion any longer.)

Now, in that snippet above, it would (3 times) create a statement, then execute 
a query to get a resultset.  If one of the queries went wrong, then the
try would auto-close any previously obtained resultsets, but it would not
do anything on the statements - in particular: not clean them up.

So, if instead it were a long running server app, it would leak up to
three statements each time your proc is run, until it eventually 
closes and reopens the connection.

>>>             format = String.format("There are %%,%dd %%-6s proverbs.%%n",
>>>                                    String.format("%,d", count).length());
>>>             System.out.printf(format, count, "total");
>> What's the point of determining the length of e.g. "1,234,567" just to
>> set it as the length for a "%,d", which would obviously produce exactly
>> that length, anyway?
> Because I use it for the second and third.

Ah, first row is always the widest value? Ok, that's a justification.

But even then I'd probably have used:
 int maxLen = String.format("%,d", count).length(); // first count is largest
 format = "There are %," + maxLen + "d %-6s proverbs.%n";
for slightly better readability.

Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

Is this the way to work with try with resources Cecil Westerhof <Cecil@decebal.nl> - 2017-08-08 13:26 +0200
  Re: Is this the way to work with try with resources Martin Gregorie <martin@address-in-sig.invalid> - 2017-08-08 12:51 +0000
    Re: Is this the way to work with try with resources Cecil Westerhof <Cecil@decebal.nl> - 2017-08-09 07:10 +0200
  Re: Is this the way to work with try with resources Patrick Roemer <sangamon@netcologne.de> - 2017-08-08 18:29 +0200
    Re: Is this the way to work with try with resources Cecil Westerhof <Cecil@decebal.nl> - 2017-08-09 07:20 +0200
    Re: Is this the way to work with try with resources Cecil Westerhof <Cecil@decebal.nl> - 2017-08-09 07:16 +0200
  Re: Is this the way to work with try with resources Patrick Roemer <sangamon@netcologne.de> - 2017-08-08 19:30 +0200
    Re: Is this the way to work with try with resources Cecil Westerhof <Cecil@decebal.nl> - 2017-08-09 06:49 +0200
    Re: Is this the way to work with try with resources Cecil Westerhof <Cecil@decebal.nl> - 2017-08-09 07:01 +0200
    Re: Is this the way to work with try with resources Patrick Roemer <sangamon@netcologne.de> - 2017-08-09 15:39 +0200
  Re: Is this the way to work with try with resources Arne Vajhøj <arne@vajhoej.dk> - 2017-08-08 21:25 -0400
    Re: Is this the way to work with try with resources Arne Vajhøj <arne@vajhoej.dk> - 2017-08-08 21:36 -0400
      Re: Is this the way to work with try with resources Cecil Westerhof <Cecil@decebal.nl> - 2017-08-09 07:29 +0200
        Re: Is this the way to work with try with resources Arne Vajhøj <arne@vajhoej.dk> - 2017-08-09 20:53 -0400
          Re: Is this the way to work with try with resources Arne Vajhøj <arne@vajhoej.dk> - 2017-08-09 23:03 -0400
    Re: Is this the way to work with try with resources Arne Vajhøj <arne@vajhoej.dk> - 2017-08-08 21:48 -0400
    Re: Is this the way to work with try with resources Cecil Westerhof <Cecil@decebal.nl> - 2017-08-09 07:24 +0200
  Re: Is this the way to work with try with resources Cecil Westerhof <Cecil@decebal.nl> - 2017-08-09 06:26 +0200
    Re: Is this the way to work with try with resources Cecil Westerhof <Cecil@decebal.nl> - 2017-08-09 08:30 +0200
    Re: Is this the way to work with try with resources Andreas Leitgeb <avl@logic.at> - 2017-08-09 09:40 +0000
      Re: Is this the way to work with try with resources Cecil Westerhof <Cecil@decebal.nl> - 2017-08-09 12:56 +0200
        Re: Is this the way to work with try with resources Andreas Leitgeb <avl@logic.at> - 2017-08-09 16:51 +0000
          Re: Is this the way to work with try with resources Cecil Westerhof <Cecil@decebal.nl> - 2017-08-09 19:37 +0200
            Re: Is this the way to work with try with resources Andreas Leitgeb <avl@logic.at> - 2017-08-09 19:51 +0000
              Re: Is this the way to work with try with resources Cecil Westerhof <Cecil@decebal.nl> - 2017-08-09 22:20 +0200
                Re: Is this the way to work with try with resources Cecil Westerhof <Cecil@decebal.nl> - 2017-08-09 23:17 +0200
          Re: Is this the way to work with try with resources Patrick Roemer <sangamon@netcologne.de> - 2017-08-09 22:08 +0200
        Re: Is this the way to work with try with resources Arne Vajhøj <arne@vajhoej.dk> - 2017-08-09 18:07 -0400
    Re: Is this the way to work with try with resources Arne Vajhøj <arne@vajhoej.dk> - 2017-08-09 18:05 -0400
  Re: Is this the way to work with try with resources Cecil Westerhof <Cecil@decebal.nl> - 2017-08-09 06:39 +0200

csiph-web