I am working on a project (someone else's code) in which a method was declared to throw a bunch of checked exceptions it could not possibly throw.
Basically, the method looked like this:
// Assume E1 extends Exception
// Assume E2 extends Exception
// Assume E3 extends Exception
public void method(Object param) throws E1, E2, E3 {
// Call a bunch of methods, none of which are declared to
// throw checked exceptions.
}
Of course, I deleted the throws clause. And of course, I received no compiler errors from doing so because throwing those exceptions is impossible based on a static analysis of the code.
So my question is why Eclipse and its builder, or javac, wasn't warning me about these spurious throws declarations? Is there something I can turn on to make this happen?
The worst is that if I was getting the warnings I ought to be getting, there would be a cascading effect because all callers of method() either re-declare the same throws or contain a bunch of useless try/catch blocks which absolutely confuse the meaning of the program.
You can force the
Eclipseto give compile time error/warning if the throws clause contains unnecessary exceptions in it.Please refer to the following screenshot: