How to use multiple catch clauses?

You can specify two or more catch clauses, each catching a different type of exception.


When an exception is thrown, each catch statement is inspected in order, and the first one whose type matches that of the exception is executed.


After one catch statement executes, the others are bypassed, and execution continues after the try/catch block.


public class Main {

  public static void main(String args[]) {

    try {

      int a = args.length;

      System.out.println("a = " + a);

      int b = 42 / a;

      int c[] = { 1 };

      c[42] = 99;

    } catch (ArithmeticException e) {

      System.out.println("Divide by 0: " + e);

    } catch (ArrayIndexOutOfBoundsException e) {

      System.out.println("Array index oob: " + e);


    System.out.println("After try/catch blocks.");




When you use multiple catch statements, exception subclasses must come before any of their superclasses.


The code above generates the following result.



Division by 0:Java.Lang.ArithmeticException/by Zero