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


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

Re: Thumbs up for suppressable exceptions in JDK 1.7

From Daniele Futtorovic <da.futt.news@laposte-dot-net.invalid>
Newsgroups comp.lang.java.programmer
Subject Re: Thumbs up for suppressable exceptions in JDK 1.7
Date 2011-09-29 18:05 +0200
Organization A noiseless patient Spider
Message-ID <j6252f$etv$1@dont-email.me> (permalink)
References <j5ru3o$cu7$1@news.albasani.net> <cp5387dadnj2jmuheklm82niu718054nsj@4ax.com> <alpine.DEB.2.00.1109272034540.14737@urchin.earth.li>

Show all headers | View raw


On 27/09/2011 21:43, Tom Anderson allegedly wrote:
> On Tue, 27 Sep 2011, Roedy Green wrote:
> 
>> On Tue, 27 Sep 2011 09:31:03 +0200, Jan Burse <janburse@fastmail.fm>
>> wrote, quoted or indirectly quoted someone who said :
>>
>>> Was just playing around with suppressable exceptions in JDK 1.7. This
>>> looks like a great improvement for bug hunting!
>>>         ... 5 more
>>
>> I think you need some exposition on why this is a good thing.
> 
> It avoids this common mistake:
> 
> try {
>     doSomethingWhichMightThrowAnException();
> }
> finally {
>     doSomeCleanupWhichMightThrowAnException();
> }
> 
> In that code, if both methods throw an exception, you will only see the
> second. The first exception - the one which actually caused the problem
> - will be lost. It's as if the VM has a very short attention span, and
> can only focus on whatever exception was most recently thrown.
> 
> In Java 7, you can put the cleanup into the close() method of an
> (Auto)Closeable, and use the try-with-resources form:
> 
> class Thing implements AutoCloseable {
>     public void close() throws AnException {
>         doSomeCleanupWhichMightThrowAnException();
>     }
> }
> 
> try (Thing t = new Thing()) {
>     doSomethingWhichMightThrowAnException();
> }
> 
> There, the compiler will arrange things so that if close() does throw an
> exception, it will be 'suppressed', and tagged on to the exception
> coming from doSomethingWhichMightThrowAnException() as a suppressed
> exception.
> 
> tom
> 

Indeed, but even more generally, we can from now on register
"suppressed" exceptions ourselves, as Jan's code and the JSE7 Javadoc
for java.lang.Throwable show. Great Thing IMHO. Closes a hole that's
been lurking there for a very long time.

Thanks Jan for bringing this to my attention.

-- 
DF.
Determinism trumps correctness.

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


Thread

Thumbs up for suppressable exceptions in JDK 1.7 Jan Burse <janburse@fastmail.fm> - 2011-09-27 09:31 +0200
  Re: Thumbs up for suppressable exceptions in JDK 1.7 Roedy Green <see_website@mindprod.com.invalid> - 2011-09-27 02:28 -0700
    Re: Thumbs up for suppressable exceptions in JDK 1.7 Jan Burse <janburse@fastmail.fm> - 2011-09-27 11:38 +0200
    Re: Thumbs up for suppressable exceptions in JDK 1.7 Tom Anderson <twic@urchin.earth.li> - 2011-09-27 20:43 +0100
      Re: Thumbs up for suppressable exceptions in JDK 1.7 Daniele Futtorovic <da.futt.news@laposte-dot-net.invalid> - 2011-09-29 18:05 +0200
        Re: Thumbs up for suppressable exceptions in JDK 1.7 Daniel Pitts <newsgroup.nospam@virtualinfinity.net> - 2011-09-29 11:25 -0700
          Re: Thumbs up for suppressable exceptions in JDK 1.7 Daniele Futtorovic <da.futt.news@laposte-dot-net.invalid> - 2011-09-29 23:57 +0200
          Re: Thumbs up for suppressable exceptions in JDK 1.7 Jan Burse <janburse@fastmail.fm> - 2011-09-30 11:30 +0200
        Re: Thumbs up for suppressable exceptions in JDK 1.7 Arved Sandstrom <asandstrom3minus1@eastlink.ca> - 2011-09-29 18:57 -0300
  Re: Thumbs up for suppressable exceptions in JDK 1.7 Jan Burse <janburse@fastmail.fm> - 2011-10-02 13:38 +0200
    Re: Thumbs up for suppressable exceptions in JDK 1.7 Jan Burse <janburse@fastmail.fm> - 2011-10-02 13:45 +0200
      Re: Thumbs up for suppressable exceptions in JDK 1.7 Tom Anderson <twic@urchin.earth.li> - 2011-10-03 19:08 +0100

csiph-web