Unreachable catch classes

Maurizio Cimadamore maurizio.cimadamore at oracle.com
Thu Apr 28 11:56:36 UTC 2011

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
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

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).


More information about the core-libs-dev mailing list