bugl
bugl
HomeLearnPatternsPathsSearch
HomeLearnPatternsPathsSearch

Loading lesson path

Learn/Java/Java Errors
Java•Java Errors

Java Multiple Exceptions

Flash cards

Review the key moves

1/4
Core idea

What is the main idea behind Java Multiple Exceptions?

Lesson checks

Practice each idea before moving on

Short Mimo-style checks built from this lesson's code, terms, and sequence.

1Quick choice

Which statement best captures the main point of this lesson?

2Fill blank

Complete the missing token from the example code.

public ___ Main {
3Order

Put the learning moves in the order that makes the concept easiest to apply.

Sometimes, different errors (exceptions) can happen in the same try block.
One try, Many catch
Multiple Exceptions

Multiple Exceptions

Sometimes, different errors (exceptions) can happen in the same try block. You can handle them with multiple catch blocks .

One try, Many catch

You can add more than one catch block, and Java will run the first one that matches the thrown exception type:

Example

public class Main {
  public static void main(String[] args) {
    try {
      int[] numbers = {1, 2, 3};
      System.out.println(numbers[10]);  // ArrayIndexOutOfBoundsException
      int result = 10 / 0;              // ArithmeticException
    }
  catch (ArrayIndexOutOfBoundsException e) {
    System.out.println("Array index does not exist.");
  }
catch (ArithmeticException e) {
  System.out.println("Cannot divide by zero.");
}
catch (Exception e) {
  System.out.println("Something else went wrong.");
}
}
}

Explanation: Only the first exception ( ArrayIndexOutOfBoundsException ) is thrown, so only the first matching catch runs.

Order Matters

You should always put more specific exceptions first , and general ones later . Otherwise, the general catch will grab the error and the specific ones will never run:

Example (bad order)

try {
 int result = 10 / 0;
}
catch (Exception e) {
 System.out.println("General error.");
}
catch (ArithmeticException e) {
 // This will never be reached System.out.println("Divide by zero.");
}

Tip

Always put Exception (the general one) at the end .

Multi-Catch

Since Java 7, you can catch multiple exceptions in one catch block using the | symbol. This is useful when different exceptions should be handled in the same way , so you don't have to repeat code:

Example

try {
  int result = 10 / 0;
  int[] numbers = {1, 2, 3};
  System.out.println(numbers[10]);
}
catch (ArithmeticException | ArrayIndexOutOfBoundsException e) {
  System.out.println("Math error or array error occurred.");
}

Previous

Java Exceptions - Try...Catch

Next

Java try-with-resources