Purpose of finally block :

--> The finally block is self explanatory(finallyyyyyy).

--> The piece of code which you want to execute after come out of
statements in try block must and should must be written in finally block.
i.e independent of reslut of try bolck code whether it is successful or not .

Ex :

public class FinallyTest
{
FinallyTest()
{
String str = "1";
try
{
//try to get array or stringIndexOutOfBoundsException

System.out.println(str.charAt(2));
}
catch(NumberFormatException ne)
{
ne.printStackTrace();
System.out.println("catch called");
}
finally
{
System.out.println("finally called");
}

System.out.println("method end called");
}

public static void main(String args[])
{
FinallyTest objTest1 = new FinallyTest();
}
}
--> Your questiona about after catch block statments also will be executed
the why finally ,

Consider above example,
In that method StringIndexOutOdBOundsException
occured which is not caught.

so statements below catch cannot be executed.
But statments in finally are executed.

The statments below catch block are executed only
if you caught the raised exception.

But the statements in finally block are executed
even though you caught or uncaught the raised exception


--> So now I think You Got IT.