Exceptions help programs handle errors. Checked and unchecked exceptions tell us when and how to handle these errors.
Checked vs unchecked exceptions in Java
Start learning this pattern below
Jump into concepts and practice - no test required
or
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Introduction
Syntax
Java
try { // code that might throw exceptions } catch (ExceptionType e) { // handle exception }
Checked exceptions must be declared or caught.
Unchecked exceptions do not need to be declared or caught.
Examples
Java
public void readFile() throws IOException { // code that might throw IOException }
Java
int divide(int a, int b) { return a / b; // might throw ArithmeticException }
Sample Program
This program shows a checked exception (IOException) that must be caught or declared, and an unchecked exception (ArithmeticException) that can be caught but does not have to be declared.
Java
import java.io.*; public class ExceptionDemo { public static void main(String[] args) { try { readFile(); } catch (IOException e) { System.out.println("Caught checked exception: " + e.getMessage()); } try { int result = divide(10, 0); System.out.println("Result: " + result); } catch (ArithmeticException e) { System.out.println("Caught unchecked exception: " + e.getMessage()); } } public static void readFile() throws IOException { throw new IOException("File not found"); } public static int divide(int a, int b) { return a / b; // might throw ArithmeticException } }
Important Notes
Checked exceptions are checked by the compiler at compile time.
Unchecked exceptions are subclasses of RuntimeException and are checked at runtime.
Use checked exceptions for recoverable conditions, unchecked for programming errors.
Summary
Checked exceptions must be declared or handled.
Unchecked exceptions do not require declaration or handling.
Checked exceptions are for recoverable errors; unchecked are for bugs.
Practice
1. Which of the following statements correctly describes
checked exceptions in Java?easy
Solution
Step 1: Understand checked exceptions
Checked exceptions are exceptions that the compiler forces you to handle or declare.Step 2: Compare options with definition
They must be either caught or declared in the method signature. states they must be caught or declared, which matches the definition.Final Answer:
They must be either caught or declared in the method signature. -> Option CQuick Check:
Checked exceptions require handling = A [OK]
Hint: Checked exceptions need try-catch or throws declaration [OK]
Common Mistakes:
- Confusing checked with unchecked exceptions
- Thinking checked exceptions are always bugs
- Believing checked exceptions don't need handling
2. Which of the following is the correct way to declare a method that throws a checked exception
IOException?easy
Solution
Step 1: Recall correct syntax for throws
The correct syntax uses the keywordthrowsfollowed by the exception class name without parentheses.Step 2: Analyze each option
public void readFile() throws IOException {} matches the correct syntax exactly. Options A, B, and C have syntax errors.Final Answer:
public void readFile() throws IOException {} -> Option AQuick Check:
Correct throws syntax = D [OK]
Hint: Use 'throws ExceptionName' without parentheses [OK]
Common Mistakes:
- Using 'throw' instead of 'throws' in method signature
- Adding parentheses after exception name
- Trying to instantiate exception in throws clause
3. What will be the output of the following Java code?
public class Test {
public static void main(String[] args) {
try {
int a = 5 / 0;
} catch (ArithmeticException e) {
System.out.println("Caught unchecked exception");
}
}
}medium
Solution
Step 1: Identify exception type
Dividing by zero causes anArithmeticException, which is an unchecked exception.Step 2: Check catch block handling
The catch block catchesArithmeticExceptionand prints "Caught unchecked exception".Final Answer:
Caught unchecked exception -> Option DQuick Check:
Unchecked exceptions can be caught = B [OK]
Hint: ArithmeticException is unchecked and can be caught [OK]
Common Mistakes:
- Thinking unchecked exceptions cause compile errors
- Assuming program crashes without output
- Confusing checked and unchecked exceptions
4. Consider this code snippet:
What is the error and how to fix it?
public void readFile() {
FileReader fr = new FileReader("file.txt");
}What is the error and how to fix it?
medium
Solution
Step 1: Identify exception type from FileReader
TheFileReaderconstructor throws a checkedIOException.Step 2: Fix by handling or declaring exception
We must either surround with try-catch or declarethrows IOExceptionin method signature.Final Answer:
FileReader constructor throws checked IOException; add try-catch or declare throws. -> Option BQuick Check:
Checked exceptions require handling = C [OK]
Hint: Checked exceptions must be caught or declared [OK]
Common Mistakes:
- Ignoring checked exception requirement
- Confusing package for FileReader
- Thinking FileReader throws unchecked exceptions
5. You want to write a method that reads a file and returns its first line. The method should handle
IOException internally but let runtime exceptions propagate. Which approach correctly applies checked vs unchecked exceptions?hard
Solution
Step 1: Understand handling checked exceptions
Checked exceptions like IOException should be handled or declared. Here, handling internally means try-catch inside method.Step 2: Understand unchecked exceptions handling
Unchecked exceptions (RuntimeExceptions) usually indicate bugs and should propagate to caller, so do not catch them here.Final Answer:
Use try-catch for IOException inside method; do not catch RuntimeExceptions. -> Option AQuick Check:
Handle checked, propagate unchecked = A [OK]
Hint: Catch checked exceptions; let unchecked exceptions propagate [OK]
Common Mistakes:
- Catching unchecked exceptions unnecessarily
- Declaring checked exceptions when handling internally
- Ignoring exception handling rules
