Core Java| JSP| Servlets| XML| EJB| JEE5| Web Services| J2ME| Glossary| Questions?

 

 

 

 

 

 

 

 

 

 

 

 

 

Search Tutorials

Latest Questions
Comments
 
Handling Multiple Catch Clauses 
 

So far we have seen how to use a single catch block, now we will see how to use more than one catch blocks in a single try block.

 

Handling Multiple Catch Clauses

                         

So far we have seen how to use a single catch block, now we will see how to use more than one catch blocks in a single try block.In java when we handle the exceptions then we can have multiple catch blocks for a particular try block to handle many different kind of exceptions that may be generated while running the program i.e. you can use more than one catch clause in a single try block however every catch block can handle only one type of exception. this mechanism is necessary when the try block has statement that raise  different type of exceptions.

The syntax for using this clause is given below:-

try{
………
………
}
catch(<exceptionclass_1> <obj1>){
//statements to handle the exception  
}

catch(<exceptionclass_2> <obj2>){
//statements to handle the exception  
}
catch(<exceptionclass_N> <objN>){
//statements to handle the exception  
}

 

When an exception is thrown, normal execution is suspended. The runtime system proceeds to find a matching catch block that can handle the exception. If no handler is found, then the exception is dealt with by the default exception handler at the top level.

 

Lets see an example given below which shows the implementation of multiple catch blocks for a single try block.

 

public class Multi_Catch
{
     public static void main (String args[])
       {
        int array[]={20,10,30};
        int num1=15,num2=0;
        int res=0;

      try
      {
         res = num1/num2;
        System.out.println("The result is" +res);

        for(int ct =2;ct >=0; ct--)
        {
       System.out.println("The value of array are" +array[ct]);
       }

    }

          catch (ArrayIndexOutOfBoundsException e)
       {
         System.out.println("Error…. Array is out of Bounds");
        }

     catch (ArithmeticException e) 
         { 
           System.out.println ("Can't be divided by Zero"); 
         }

      }
    }

 

 

Output of the program:

 
C:\Roseindia\>javac Multi_Catch.java

C:\Roseindia\>java Multi_Catch

Can't be divided by Zero

In this example we have used two catch clause catching the exception ArrayIndexOutOfBoundsException and ArithmeticException in which the statements that may raise exception are kept under the try block. When the program is executed, an exception will be raised. Now that time  the first catch block is skipped and the second catch block handles the error.

Download this program

Lets have an another output, in which the second catch block is skipped and the first catch block handles the error.

public class Multi_Catch1
{
     public static void main (String args[])
       {
        int array[]=new int [5];
        int num1=15,num2=2;
        int res=0;

      try
      {
         res = num1/num2;
        System.out.println("The result is" +res);

        for(int ct =0;ct <=5; ct++)
        {
           array[ct] = ct * ct ;
       }

    }

          catch (ArrayIndexOutOfBoundsException e)
       {
         System.out.println("Assigning the array beyond the upper bound");
        }

     catch (ArithmeticException e) 
         { 
           System.out.println ("Can't be divided by Zero"); 
         }

      }
    }

 

 

Output of the program:

 
C:\Roseindia\>javac Multi_Catch.java

C:\Roseindia\>java Multi_Catch

Assigning the array beyond the upper bound

Download this example

Handling the Unreachable Code Problem 

The multiple catch blocks can generate unreachable code error i.e. if the first catch block contains the Exception class object then the subsequent catch blocks are never executed.  This is known as Unreachable code problem. To avoid this, the last catch block in multiple catch blocks must contain the generic class object that is called the Exception class. This exception class being the super class of all the exception classes and is capable of  catching any  types of exception. The generic Exception class can also be used with multiple catch blocks.

Take a look at the following example:

public class Generic_Excep
{
           public static void main (String args[])
              { 
               String str = "Exception" ;
               int len=0;
           try
              {
             StringBuffer sbuf = new StringBuffer(str);
            len = str.length() ;
           for(int ct=len;ct>=0;ct--)
            {
          System.out.print(sbuf.charAt(ct));
           }
       }
       catch(Exception e)
      {
      System.out.println("Error...."+e);
       }
     }
   }

 

Output of the program:

C:\Roseindia\>javac Generic_Excep.java

C:\Roseindia\>java Generic_Excep

Error....java.lang.StringIndexOutOfBoundsException: String index out of range: 9

In this example we didn't specify that which one exception may occur during the execution of program but here we are trying to access the value of an array that is out of bound still we don't need to worry about handle the exception because we have used the Exception class that is responsible to handle any type of exception.

Download this example

                         

» View all related tutorials
Related Tags: c exception orm event io struct exec uri int exe condition call interrupt program execution ram ical flow pic exceptions

Leave your comment:

Name:

Email:

URL:

Title:

Comments:


Enter Code:

Audio Version
Reload Image
 

Note: Emails will not be visible or used in any way, and are not required. Please keep comments relevant. Any content deemed inappropriate or offensive may be edited and/or deleted.

No HTML code is allowed. Line breaks will be converted automatically. URLs will be auto-linked. Please use BBCode to format your text.

Add This Tutorial To:
  Del.icio.us   Digg   Google   Spurl   Blink   Furl   Simpy   Y! MyWeb 
Training Courses
Tell A Friend
Your Friend Name
Software Solutions
Least Viewed
Most Rated
Recently Viewed
Search Tutorials

 

 
 

Home | JSP | EJB | JDBC | Java Servlets | WAP  | Free JSP Hosting  | Search Engine | News Archive | Jboss 3.0 tutorial | Free Linux CD's | Forum | Blogs

About Us | Advertising On RoseIndia.net  | Site Map

India News

Indian Software Development Company | iPhone Development Company in India | Flex Development Company in India | Java Training Delhi | Java Training at Noida |

Send your comments, Suggestions or Queries regarding this site at roseindia_net@yahoo.com.

Copyright © 2008. All rights reserved.