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