As far as I know, I think that the finalize method is the only one declaring a Throwable in its throws clause. The reason is because the finalize method is usually invoked by the garbage collection
thread to give a chance to an object to clean things up. Now, if for some reasons, the clean up should not be completed successfully (error or whatever), it shouldn't affect the rest of the program and that's why
Any exception thrown by the finalize method causes the finalization of this object to be halted, but is otherwise ignored.
I think developers should never declare Throwables in their throws clause but restrict it to the exact common denominator exception that gets thrown from the method.
[ April 15, 2002: Message edited by: Valentin Crettaz ]