What if you could catch every error perfectly without messy code?
Why Multiple catch blocks in Java? - Purpose & Use Cases
Start learning this pattern below
Jump into concepts and practice - no test required
Imagine you write a program that reads a file, converts text to numbers, and divides values. You try to catch errors one by one manually, writing separate code for each error type.
This manual way is slow and messy. You might miss some errors or write repeated code. It's hard to keep track of many error types and fix bugs quickly.
Multiple catch blocks let you handle different errors clearly and separately. You write one try block, then many catch blocks for each error type. This keeps code clean and easy to fix.
try {
// code
} catch (Exception e) {
// one big catch
}try {
// code
} catch (IOException e) {
// handle IO
} catch (NumberFormatException e) {
// handle number error
}You can handle many specific errors clearly, making your program more reliable and easier to maintain.
When reading user input from a file, you can catch file errors separately from number conversion errors, giving users clear messages for each problem.
Manual error handling is slow and error-prone.
Multiple catch blocks separate error types cleanly.
This makes programs easier to read and fix.
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
