Skip to content
Related Articles
Get the best out of our app
GFG App
Open App
geeksforgeeks
Browser
Continue

Related Articles

Nested try blocks in Exception Handling in Java

Improve Article
Save Article
Like Article
Improve Article
Save Article
Like Article

In Java, we can use a try block within a try block. Each time a try statement is entered, the context of that exception is pushed on to a stack. Given below is an example of a nested try.
In this example, inner try block (or try-block2) is used to handle ArithmeticException, i.e., division by zero. After that, the outer try block (or try-block) handles the ArrayIndexOutOfBoundsException.

Example 1:




class NestedTry {
  
    // main method
    public static void main(String args[])
    {
        // Main try block
        try {
  
            // initializing array
            int a[] = { 1, 2, 3, 4, 5 };
  
            // trying to print element at index 5
            System.out.println(a[5]);
  
            // try-block2 inside another try block
            try {
  
                // performing division by zero
                int x = a[2] / 0;
            }
            catch (ArithmeticException e2) {
                System.out.println("division by zero is not possible");
            }
        }
        catch (ArrayIndexOutOfBoundsException e1) {
            System.out.println("ArrayIndexOutOfBoundsException");
            System.out.println("Element at such index does not exists");
        }
    }
    // end of main method
}


Output:

ArrayIndexOutOfBoundsException
Element at such index does not exists

Whenever a try block does not have a catch block for a particular exception, then the catch blocks of parent try block are inspected for that exception, and if a match is found then that catch block is executed.

If none of the catch blocks handles the exception then the Java run-time system will handle the exception and a system generated message would be shown for the exception.

Example 2:




class Nesting {
    // main method
    public static void main(String args[])
    {
        // main try-block
        try {
  
            // try-block2
            try {
  
                // try-block3
                try {
                    int arr[] = { 1, 2, 3, 4 };
                    System.out.println(arr[10]);
                }
  
                // handles ArithmeticException if any
                catch (ArithmeticException e) {
                    System.out.println("Arithmetic exception");
                    System.out.println(" try-block1");
                }
            }
  
            // handles ArithmeticException if any
            catch (ArithmeticException e) {
                System.out.println("Arithmetic exception");
                System.out.println(" try-block2");
            }
        }
  
        // handles ArrayIndexOutOfBoundsException if any
        catch (ArrayIndexOutOfBoundsException e4) {
            System.out.print("ArrayIndexOutOfBoundsException");
            System.out.println(" main try-block");
        }
        catch (Exception e5) {
            System.out.print("Exception");
            System.out.println(" handled in main try-block");
        }
    }
}


Output:

ArrayIndexOutOfBoundsException main try-block

My Personal Notes arrow_drop_up
Last Updated : 23 Oct, 2018
Like Article
Save Article
Similar Reads
Related Tutorials