Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.java.programmer > #8401
| From | Daniel Pitts <newsgroup.nospam@virtualinfinity.net> |
|---|---|
| Newsgroups | comp.lang.java.programmer |
| Subject | Re: Thumbs up for suppressable exceptions in JDK 1.7 |
| References | <j5ru3o$cu7$1@news.albasani.net> <cp5387dadnj2jmuheklm82niu718054nsj@4ax.com> <alpine.DEB.2.00.1109272034540.14737@urchin.earth.li> <j6252f$etv$1@dont-email.me> |
| Message-ID | <XK2hq.1$eF7.0@newsfe20.iad> (permalink) |
| Date | 2011-09-29 11:25 -0700 |
On 9/29/11 9:05 AM, Daniele Futtorovic wrote:
> 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.
>
This will definitely be a big help debugging issues. It may also help
fill up log files faster ;-). I can see it being extremely useful in a
try/catch/retry scenario (such as a service which tries a few times to
connect to a remote machine, and gets a different error each time).
I want to read up on it, but I wonder if it will help with this
(unfortunate) situation:
try {
buggyCodeThrowsNullPointerException();
} catch (Exception oopsThisWasIgnoredByLazyProgrammer) {
throw new BusinessLayerSpecificException(
"Unable to process request for no good reason.");
}
This suppresses a bug, but the original programmer wasn't thinking about
potential bugs, only recoverable exceptions. The exception is
effectively suppressed.
Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Next in thread | Find similar
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