Hi,
Iam also reading the same book.
I think the reason is as follows.
See whenever a Checked exception is thrown the compiler will say either you have to catch it or u have to throw it. If not compiler will not allow you to go further.OK
Now come to finalize(),even though the exception occurs in finalize() the runtime ie JVM will ignore.This happens at runtime.
But if u dont satisfy the compiler how will u run the program. Thats why you have to declare it to be thrown or catch the Exception to pass on the compiler's
test [in case of checked exception].
This is my thinking.
Let us see more replies.