In the SCJP book by Kathey Sierra, an excerpt is as follows:
If a method is overridden but you use a polymorphic (supertype) reference to refer to
When you look at the code, you can realize: when the object you invoke eat() on is
Because of that, the second usage results in the compiler complaining to you.
Overriding a method and to reduce the throws signature is perfectly fine. A caller that knows how to deal with an exception for sure works when a sub class never throws.