From a design perspective,
you should also worry about runtime exceptions.
Just because the compiler allows something does not mean that it should be
done. For example, consider invalid downcasts.
Think about code already in service that uses the method you want to override;
a method that throws MyException. During program checkout, it was verified that
MyException was properly handled. For the revised method, following the Is-A rule,
the catch clause that handles MyException will also handle an extension of it, if you
create one. But it may not catch a new exception type, runtime or otherwise. So you
will have broken the application error handler.
Jim ...
...