Showing posts with label Exception Handling. Show all posts
Showing posts with label Exception Handling. Show all posts

Thursday, April 29, 2010

finally block not executed

Finally block is always executed except some of the following cases.
  • If the JVM exits while the try or catch code is being executed, then the finally block may not execute. 
          e.g. System.exit(0);
  • If the thread executing the try or catch code is interrupted or killed, the finally block may not execute even though the application as a whole continues. 
         e.g. Thread.interrupted();


Friday, February 12, 2010

What is difference between Unchecked and Checked Exceptions?

Unchecked exceptions :
  • represent defects in the program (bugs) - often invalid arguments passed to a non-private method. To quote from The Java Programming Language, by Gosling, Arnold, and Holmes : "Unchecked runtime exceptions represent conditions that, generally speaking, reflect errors in your program's logic and cannot be reasonably recovered from at run time."
  • are subclasses of RuntimeException, and are usually implemented using IllegalArgumentException, NullPointerException, or IllegalStateException
  • a method is not obliged to establish a policy for the unchecked exceptions thrown by its implementation (and they almost always do not do so)
Checked exceptions :
  • represent invalid conditions in areas outside the immediate control of the program (invalid user input, database problems, network outages, absent files)
  • are subclasses of Exception
  • a method is obliged to establish a policy for all checked exceptions thrown by its implementation (either pass the checked exception further up the stack, or handle it somehow)