In Java, what does the finally block do?

The finally block, if used, is placed after a try block and the catch blocks that follow it. The finally block contains code that will be run whether or not an exception is thrown in a try block. The general syntax looks like this:

public void someMethod{
   Try {
   // some code
   }

   Catch(Exception x) {
   // some code
   }

   Catch(ExceptionClass y) {
   // some code
   }

   Finally{
   //this code will be executed whether or not an exception 
   //is thrown or caught
   }
}




There are 4 potential scenarios here:

1.	The try block runs to the end, and no exception is 
thrown.  In this scenario, the finally block will be 
executed after the try block.

2.	An exception is thrown in the try block, which is
then caught in one of the catch blocks.  In this scenario, 
the finally block will execute right after the catch block 
executes.

3.	An exception is thrown in the try block and there's 
no matching catch block in the method that can catch 
the exception.  In this scenario, the call to the method 
ends, and the exception object   is thrown to the enclosing 
method - as in the method in which the   try-catch-finally
blocks reside.  But, before the method ends, the finally 
block is executed.

4.  Before the try block runs to completion it returns to 
wherever the method was invoked.  But, before it returns 
to the invoking method, the code in the finally block is still 
executed.  So, remember that the code in the finally  block 
willstill be executed even if there is a return 
statement somewhere in the try block.

You can also read more about how the finally block will run after a return statement here – along with some good code samples: Will finally run after return?

Hiring? Job Hunting? Post a JOB or your RESUME on our JOB BOARD >>

Subscribe to our newsletter for more free interview questions.

  • satish

    Refer to this link for more info about finally block and its usage http://techno-terminal.blogspot.in/2015/08/finally-block-and-its-usage.html

  • Reckless Rajput

    But Finally Block is used for the closed the connection that are used in our program.that by we used finally block …….finally block can be used try with catch and only try and finally…

  • Swoop Diggity

    OK, that’s pretty huge… I didn’t know finally block would be called from an explicit return contained in the try or catch block