I think this is not a situation for warning the compiler, because an βoverly wideβ exception is not necessarily a problem: if this method is not final or private, it determines which exception any implementation of the subclass can implement. In this case, wide coverage may be intentional.
Your question will apply equally well for Java pre-7:
public void foo(String bar) throws Exception {
Here throws Exception can also be considered bad practice (but there are no warnings about this).
On the same line of the argument, note that you will receive a compilation error when you try to catch an excluded (marked) exception that cannot be executed, but you can add all kinds of exceptions that the implementation body does not use in the throws .
A tool like FindBugs would be helpful.
Update: βIf this method is not final or privateβ: I must agree that there may also be a warning for private or final methods (and possibly static).
Update 2: even for the final methods, you can leave your possibilities open in order to throw more exceptions in the future without breaking the interface.
Thilo source share