Path: csiph.com!usenet.pasdenom.info!weretis.net!feeder4.news.weretis.net!newsfeed.fsmpi.rwth-aachen.de!newsfeed.pionier.net.pl!news.dialog.net.pl!not-for-mail From: Arivald Newsgroups: comp.lang.java.programmer Subject: Re: unnecessary code in Oracle example? Date: Thu, 10 Oct 2013 10:26:55 +0200 Organization: Dialog Net Lines: 48 Message-ID: References: NNTP-Posting-Host: poczta.pgs-soft.com Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Trace: news.dialog.net.pl 1381393607 23254 62.87.249.67 (10 Oct 2013 08:26:47 GMT) X-Complaints-To: abuse@dialog.net.pl NNTP-Posting-Date: Thu, 10 Oct 2013 08:26:47 +0000 (UTC) User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Thunderbird/24.0 In-Reply-To: Xref: csiph.com comp.lang.java.programmer:26277 W dniu 2013-10-10 07:47, Sebastian pisze: > Am 10.10.2013 06:42, schrieb Arivald: >> W dniu 2013-10-10 04:56, Jim Janney pisze: >>> markspace writes: >>> >>>> On 10/9/2013 1:21 PM, Jim Janney wrote: >>>>> Yes, in Java 7 you can have clean syntax and clean semantics. Looks >>>>> like a win all around. >>>>> >>>> >>>> For Java 5+, with varargs you could do (not compiled): >> [...] >>> >>> Mmm... you're complicating the code with extra assignments and tests, >>> just to avoid one layer of nesting. I like the version with two >>> try-finally blocks, partly because the lexical structure reflects what's >>> happening in the code: two independent cleanups. But the Java 7 version >>> is better. >>> >> >> I wonder how Java 7 version (try-with-resources) handle exceptions... >> For example, if all 3 streams throw exception from close(), will it >> guarantee to close all of them? And how to handle such exceptions? >> > Why don't you modify markspace's example to see for yourself, e. g. > > @Override > public void close() throws IOException { > System.out.println( "Trying to close " > + getClass().getSimpleName()+":"+name ); > throw new IOException("CloseError " + name); > } > > Then read what the Javadocs have to say about suppressed exceptions. > > -- Sebastian I read docs about suppressed exceptions. And of course I can run test. But still I wonder how it should behave, if there is more than one close-able resource, two of them raise exceptions, and there was no exception in main block (so no suppression). Can anyone point me to relevant doc? Google is not very helpful. -- Arivald