Unreachable catch classes

David Holmes David.Holmes at oracle.com
Thu Apr 28 12:03:13 UTC 2011


Maurizio Cimadamore said the following on 04/28/11 21:56:
> On 27/04/11 13:51, Maurizio Cimadamore wrote:
>> On 27/04/11 09:18, David Holmes wrote:
>>> Special-casing Throwable wouldn't be sufficient as people may use 
>>> Exception instead. 
>> I guess this doesn't invalidate the argument - we could special-case 
>> Exception AND Throwable, since they are already treated specially in 
>> the language...
>>
>> Maurizio
> Hi
> after a discussion with the team, we have decided that we will relax the 
> new javac warnings so that they will *not* be generated for those catch 
> clauses catching Exception or Throwable.
> 
> This is similar to how javac has always handled a similar case (error 
> message: 'exception never thrown in body of try'); for example, this 
> code compiles:
> 
> try { }
> catch (Exception e) { ... }
> 
> while the following does not compile:
> 
> try { }
> catch (IOException e) { ... } //error IOException never thrown

Thanks Maurizio. I never realized the above case existed. :)

David
-----


> 
> The code generating the newly added javac warnings will be changed 
> accordingly; for example, the following will compile w/o warnings:
> 
> try { throw new FileNotFoundException(); }
> catch (FileNotFoundException fnf) { ... }
> catch (Exception e) { ... }
> 
> while the following code will still emit a 'dead catch' warning:
> 
> try { throw new FileNotFoundException(); }
> catch (FileNotFoundException fnf) { ... }
> catch (IOException e) { ... }
> 
> 
> This should accommodate all weird cases of checked exceptions not being 
> declared (as in Class.newInstance).
> 
> Maurizio
> 
> 
> 
> 
> 



More information about the core-libs-dev mailing list