posted 12 years ago
And with good reason too! What if we have an extensible class, that has a default implementation of some method, which doesn't throw any exceptions; but it can foresee that any subclasses may want to throw that particular exception when they override the method? If the base class doesn't declare the method to be capable of throwing that exception, then the subclasses can't.
Take a look at the finalize() method, for example. Object's implementation does absolutely nothing, but it still declares the method to throw a Throwable, so subclasses that override finalize() may throw any exception they want.