Multiple catch blocks let you handle different errors separately in your program. This helps fix problems more clearly and safely.
Multiple catch blocks in Java
Start learning this pattern below
Jump into concepts and practice - no test required
try { // code that might throw exceptions } catch (ExceptionType1 e1) { // handle ExceptionType1 } catch (ExceptionType2 e2) { // handle ExceptionType2 } // more catch blocks as needed
Each catch block handles one specific type of exception.
Catch blocks are checked in order; the first matching one runs.
try { int[] numbers = {1, 2, 3}; System.out.println(numbers[5]); } catch (ArrayIndexOutOfBoundsException e) { System.out.println("Index is out of range."); } catch (Exception e) { System.out.println("Some other error happened."); }
try { int result = 10 / 0; } catch (ArithmeticException e) { System.out.println("Cannot divide by zero."); } catch (Exception e) { System.out.println("General error."); }
The program tries to access an invalid array index, which causes an exception. The first catch block matches and runs, so the arithmetic error is not reached.
public class MultipleCatchExample { public static void main(String[] args) { try { int[] arr = {1, 2, 3}; System.out.println(arr[3]); // This will cause ArrayIndexOutOfBoundsException int result = 10 / 0; // This will cause ArithmeticException but won't run because of previous error } catch (ArrayIndexOutOfBoundsException e) { System.out.println("Caught an array index error."); } catch (ArithmeticException e) { System.out.println("Caught an arithmetic error."); } catch (Exception e) { System.out.println("Caught some other error."); } } }
Put more specific exceptions before general ones like Exception.
Only one catch block runs per try.
Use multiple catch blocks to give clear messages or recovery steps for different errors.
Multiple catch blocks let you handle different errors separately.
They run in order, and only the first matching one runs.
Always put specific exceptions before general ones.
Practice
What is the main purpose of using multiple catch blocks in Java?
Solution
Step 1: Understand exception handling
Multiple catch blocks allow handling different exceptions in different ways.Step 2: Identify the purpose
Each catch block targets a specific exception type, so only the matching one runs.Final Answer:
To handle different types of exceptions separately -> Option AQuick Check:
Multiple catch blocks = handle exceptions separately [OK]
- Thinking all catch blocks run for one exception
- Believing catch blocks improve speed
- Confusing catch blocks with try blocks
Which of the following is the correct syntax for multiple catch blocks in Java?
try {
// code
} catch (IOException e) {
// handle IO
} catch (Exception e) {
// handle general
}Solution
Step 1: Check catch block order
Specific exceptions like IOException must come before general ones like Exception.Step 2: Verify syntax correctness
Each catch block must have parentheses around exception type and variable.Final Answer:
try { } catch (IOException e) { } catch (Exception e) { } -> Option BQuick Check:
Specific before general, correct syntax [OK]
- Placing general exception before specific
- Missing parentheses in catch
- Combining catch blocks without braces
What will be the output of the following code?
try {
int[] arr = new int[2];
System.out.println(arr[5]);
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("Index error");
} catch (Exception e) {
System.out.println("General error");
}Solution
Step 1: Identify exception thrown
Accessing arr[5] causes ArrayIndexOutOfBoundsException.Step 2: Match catch block
The first catch matches ArrayIndexOutOfBoundsException and prints "Index error".Final Answer:
Index error -> Option DQuick Check:
ArrayIndexOutOfBoundsException caught by first catch [OK]
- Thinking general catch runs first
- Expecting exception message printed
- Assuming no output on exception
Find the error in this code snippet:
try {
int a = 5 / 0;
} catch (Exception e) {
System.out.println("Error");
} catch (ArithmeticException e) {
System.out.println("Math error");
}Solution
Step 1: Check catch block order
More specific exceptions must come before general ones.Step 2: Identify error
ArithmeticException is a subclass of Exception, so its catch must be first.Final Answer:
ArithmeticException catch block should come before Exception catch block -> Option CQuick Check:
Specific before general catch order [OK]
- Putting general catch before specific
- Ignoring catch block order rules
- Assuming no compile error
Consider this code:
try {
String s = null;
System.out.println(s.length());
} catch (NullPointerException e) {
System.out.println("Null pointer caught");
} catch (RuntimeException e) {
System.out.println("Runtime exception caught");
} catch (Exception e) {
System.out.println("General exception caught");
}What will be printed and why is the catch order important here?
Solution
Step 1: Identify exception thrown
Calling length() on null throws NullPointerException.Step 2: Check catch order
NullPointerException is caught by the first catch block, which is specific and placed before general exceptions.Step 3: Understand importance of order
If general exceptions came first, specific ones would be unreachable causing compile error.Final Answer:
"Null pointer caught" because NullPointerException is caught first -> Option AQuick Check:
Specific exceptions first, correct catch order [OK]
- Assuming general catch runs first
- Ignoring NullPointerException specifics
- Not knowing catch block order matters
