beginnersbook.com

  • Home
  • All Tutorials
    • Learn Servlet
    • Learn JSP
    • Learn JSTL
    • Learn C
    • Learn C++
    • Learn MongoDB
    • Learn XML
    • Learn Python
    • Learn Perl
    • Learn Kotlin
  • Core Java
  • OOPs
  • Collections
  • Java I/O
  • JSON
  • DBMS

Flow control in try-catch-finally blocks

By Chaitanya Singh | Filed Under: Exception Handling

In this tutorial we will see how to use try-catch-finally blocks for exception handling. Lets see  the try-catch block first and then we will see how to work with try-catch-finally.

Flow of control in try/catch blocks:

when exception doesn’t occur:
When the statements that are present in try block doesn’t throw any exception then first, the body of try block executes and then the code after catch blocks. In this case catch block never runs as they are meant to run when an exception occurs. For example-

class Example1 
{
   public static void main(String args[])
   {
	int x = 10;
	int y = 10;
	try{
	   int num= x/y;
	   System.out.println("next-statement: Inside try block");
	}
        catch(Exception ex)
	{
	   System.out.println("Exception");
	}
	System.out.println("next-statement: Outside of try-catch");
   }
}

Output:

next-statement: Inside try block
next-statement: Outside of try-catch

In the above example exception didn’t occur in try block so catch block didn’t run.

when exception occurs:
First have a look at the example below and then we will discuss the output:

class Example1 
{
   public static void main(String args[])
   {
	int x = 0;
	int y = 10;
	try{
	   int num= y/x;
	   System.out.println("next-statement: Inside try block");
	} 
        catch(Exception ex)
	{
	   System.out.println("Exception Occurred");
	}
	System.out.println("next-statement: Outside of try-catch");
   }
}

Output:

Exception Occurred
next-statement: Outside of try-catch

Point to note in above example: There are two statements present inside try block. Since exception occurred because of first statement, the second statement didn’t execute. Hence we can conclude that if an exception occurs then the rest of the try block doesn’t execute and control passes to catch block.

Flow of control in try/catch/finally blocks:

  1. If exception occurs in try block’s body then control immediately transferred(skipping rest of the statements in try block) to the catch block. Once catch block finished execution then finally block and after that rest of the program.
  2. If there is no exception occurred in the code which is present in try block then first, the try block gets executed completely and then control gets transferred to finally block (skipping catch blocks).
  3. If a return statement is encountered either in try or catch block. In this case finally block runs. Control first jumps to finally and then it returned back to return statement.

Lets see this example to understand the above mentioned points:

class TestExceptions {
   static void myMethod(int testnum) throws Exception {
      System.out.println ("start - myMethod");
      if (testnum == 12) 
         throw new Exception();
      System.out.println("end - myMethod");
      return;	
   }
   public static void main(String  args[]) {
      int testnum = 12;
      try {
         System.out.println("try - first statement");
         myMethod(testnum);
         System.out.println("try - last statement");
      }
      catch ( Exception ex) {
         System.out.println("An Exception");
      }
      finally {
         System. out. println( "finally") ;
      }
      System.out.println("Out of try/catch/finally - statement");
   }
}

Output:

try - first statement
start - myMethod
An Exception
finally
Out of try/catch/finally - statement
❮ PreviousNext ❯

Comments

  1. karthik says

    November 2, 2014 at 5:43 PM

    it is very useful to me… gud concept ….explanation of program is also gud…

    Reply
  2. Michael says

    January 5, 2015 at 5:23 PM

    I am having a little trouble with Exception handling as I am new to Java.

    I need to make a comparison application that handles incorrect input type (integers are needed, nothing else) that stores the last-known correct input and continues from there.

    Is there a way you can help me with this?

    Reply
  3. Caroline says

    March 30, 2016 at 6:46 PM

    Why doesn’t the last example print out “end – myMethod” at the end? Is it because in the method, it caught an exception as testnum = 12?

    Reply
  4. sai divya sree says

    June 26, 2016 at 10:37 PM

    wow…this article made my understanding of flow control in try/catch/finally more easy..Thanks a lot.

    Reply

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Exception Handling

  • Exception handling
  • try-catch block
  • Multiple catch blocks
  • nested try-catch
  • finally block
  • Flow Control in try-catch-finally
  • throw keyword
  • throws clause
  • throw vs throws
  • Custom Exception
  • Checked and Unchecked Exceptions
  • Exception Examples

MORE ...

  • Java Tutorial
  • OOPs Concepts
  • Java String
  • Java Multithreading
  • Java I/O
  • Java Serialization
  • Java Regex
  • Java AWT
  • Java Swing
  • Java Enum
  • Java Annotations

Copyright © 2012 – 2021 BeginnersBook . Privacy Policy . Sitemap