Win a copy of Re-engineering Legacy Software this week in the Refactoring forum
or Docker in Action in the Cloud/Virtualization forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

finalize() Exception

 
Parag Mokal
Greenhorn
Posts: 19
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
In the follwing class the "protected void finalize()" method gets compiled
<code>
public class FinalException {
FinalException() {
System.out.println("Creating FinalException ");
}
protected void finalize() {
System.out.println("finalizing ");
//super.finalize();
}
public static void main(String[] args)
{
new FinalException();
System.gc();
}
}
</code>
But when I call the "superclass finalize()"(which is commented in the above code method I get the error that the Throwable exception must be caught. Why the Exception has to be caught only when the superclass finalize() is called.
 
Elisabeth Van
Ranch Hand
Posts: 42
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
If you check the API, the finalize method in the Object class (which is what you're calling when you say super.finalize() ) throws a Throwable exception.
You don't get an error when you call the finalize method in your class, because it doesn't throw any exceptions. If you declared your method as follows:
protected void finalize() throws Throwable {
then you would have an exception you'd need to catch, as in the finalize() method from Object.
Hope this helps.
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic