Skip to main content

Flow of control in try/catch

Flow of control in try/catch


Flow of control in try/catch blocks

when exception doesn’t occur:

When the code which is present in try block’s body 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 be run when an exception occurs. For Example
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 below example and then we will discuss it 
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 such case also finally runs. Control first goes to finally and then it returned back to return statement.
Consider the below example to understand 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

Comments

Popular posts from this blog

Switch Case

Syntax : Switch Case in Java Programming It is alternative to else-if ladder. Switch Case Syntax is similar to – C/C++  Switch. Switch allows you to choose a block of statements to run from a selection of code, based on the return value of an expression. The expression used in the switch statement must return an  int, a String, or an enumerated value . switch (selection) { // value case value1 : // checking value 1 statement ( s ) ; break ; // use to break switch flow if condition match case value2 : // checking value 2 statement ( s ) ; break ; . . case value_n : statement ( s ) ; break ; default : statement ( s ) ; } Different Ways of Using Switch Case : Switch Case Using Integer Case int i=3; switch (i) { case 1 : System . out . println ( "One player is playing this game." ) ; break ; case 2 : System . out . println ( "Two players are playing ...

Inheritance in Java

Inheritance in Java Inheritance  is one of the feature of Object-Oriented Programming (OOPs). Inheritance allows a class to use the properties and methods of another class. In other words, the derived class inherits the states and behaviors from the base class. The derived class is also called subclass and the base class is also known as super-class . The derived class can add its own additional variables and methods. These additional variable and methods differentiates the derived class from the base class. Inheritance is a  compile-time  mechanism. A super-class can have any number of subclasses . But a subclass can have only one superclass. This is because Java does not support multiple inheritance. The superclass and subclass have  “is-a”  relationship between them. Let’s have a look at the example below. Inheritance  Example Let’s consider a superclass  Vehicle . Different vehicles have different features and properties howeve...

Multilevel inheritance

Multilevel inheritance We discussed a bit about  Multilevel inheritance  in types of inheritance in java. In this tutorial we will explain multilevel inheritance with the help of   diagram  and  example program . It’s pretty clear with the diagram that in Multilevel inheritance there is a concept of grand parent class. If we take the example of above diagram then class C inherits class B and class B inherits class A which means B is a parent class of C and A is a parent class of B. So in this case class C is implicitly inheriting the properties and method of class A along with B that’s what is called multilevel inheritance. Example : In this example we have three classes –  Car, Maruti and Maruti800. We have done a setup – class Maruti extends Car and class Maurit800 extends Maurti. With the help of this Multilevel hierarchy setup our Maurti800 class is able to use the methods of both the classes (Car and Maruti). class Car { ...