Bird
Raised Fist0
Javaprogramming~10 mins

Checked vs unchecked exceptions in Java - Visual Side-by-Side Comparison

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Concept Flow - Checked vs unchecked exceptions
Start
Code runs
Exception occurs?
NoContinue normal flow
Yes
Is exception checked?
YesMust handle or declare
Handle or declare
Unchecked exception
Can be caught but not required
Program may crash if uncaught
End
The program runs and may throw exceptions. Checked exceptions must be handled or declared, while unchecked exceptions can be caught but are not required to be handled.
Execution Sample
Java
public void readFile() throws IOException {
  FileReader file = new FileReader("file.txt");
  int data = file.read();
  file.close();
}
This method reads a file and declares it throws IOException, a checked exception that must be handled or declared.
Execution Table
StepActionException Thrown?Exception TypeHandling Required?Result
1Start method readFile()No-NoMethod starts normally
2Create FileReader objectNo-NoFileReader created
3Call read() methodYesIOException (checked)YesException must be handled or declared
4Method declares throws IOExceptionN/AN/AHandled by declarationCompilation succeeds
5If exception occurs at runtime and not caughtYesIOExceptionYesProgram throws exception at runtime
6If exception caught in try-catchYesIOExceptionHandledProgram continues safely
7Throw unchecked exception (e.g., NullPointerException)YesNullPointerException (unchecked)NoHandling optional, program may crash if uncaught
8End of methodNo-NoMethod ends
💡 Execution stops normally or with exception if uncaught
Variable Tracker
VariableStartAfter Step 2After Step 3After Step 4Final
filenullFileReader objectFileReader objectFileReader objectClosed or null
dataundefinedundefinedint value or exceptionint value or exceptionint value or exception
Key Moments - 3 Insights
Why must checked exceptions be declared or handled?
Checked exceptions like IOException are checked by the compiler to ensure the programmer handles possible errors, as shown in execution_table row 3 and 4.
Can unchecked exceptions be ignored without handling?
Yes, unchecked exceptions like NullPointerException do not require handling, but if uncaught, they can crash the program (see execution_table row 7).
What happens if a checked exception is not declared or caught?
The code will not compile because the compiler enforces handling or declaration of checked exceptions, as shown in execution_table row 3 and 4.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, at which step is a checked exception first thrown?
AStep 2
BStep 3
CStep 7
DStep 5
💡 Hint
Check the 'Exception Thrown?' and 'Exception Type' columns in execution_table rows.
According to variable_tracker, what is the state of 'file' after step 2?
Anull
BClosed
CFileReader object
Dundefined
💡 Hint
Look at the 'file' row and 'After Step 2' column in variable_tracker.
If the IOException is not declared or caught, what happens according to the key_moments and execution_table?
AProgram compiles and runs normally
BCompiler error, code does not compile
CProgram crashes at runtime
DException is ignored silently
💡 Hint
Refer to key_moments about checked exceptions and execution_table rows 3 and 4.
Concept Snapshot
Checked exceptions must be declared or handled in code.
Unchecked exceptions do not require declaration or handling.
Checked exceptions are checked at compile time.
Unchecked exceptions occur at runtime and may crash the program if uncaught.
Use try-catch or throws declaration for checked exceptions.
Full Transcript
This visual execution shows how Java handles checked and unchecked exceptions. The program starts and runs code. If an exception occurs, it checks if it is checked or unchecked. Checked exceptions like IOException must be declared or handled, or the code will not compile. Unchecked exceptions like NullPointerException do not require handling but may crash the program if uncaught. The variable tracker shows how variables like the FileReader object change during execution. Key moments clarify why checked exceptions require handling and what happens if they are ignored. The quiz tests understanding of when exceptions occur and how they affect program flow.

Practice

(1/5)
1. Which of the following statements correctly describes checked exceptions in Java?
easy
A. They are runtime exceptions that do not require handling.
B. They are errors that cannot be handled by the program.
C. They must be either caught or declared in the method signature.
D. They are always caused by bugs in the code.

Solution

  1. Step 1: Understand checked exceptions

    Checked exceptions are exceptions that the compiler forces you to handle or declare.
  2. 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.
  3. Final Answer:

    They must be either caught or declared in the method signature. -> Option C
  4. Quick 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
A. public void readFile() throws IOException {}
B. public void readFile() throw IOException {}
C. public void readFile() throws IOException() {}
D. public void readFile() throws new IOException {}

Solution

  1. Step 1: Recall correct syntax for throws

    The correct syntax uses the keyword throws followed by the exception class name without parentheses.
  2. Step 2: Analyze each option

    public void readFile() throws IOException {} matches the correct syntax exactly. Options A, B, and C have syntax errors.
  3. Final Answer:

    public void readFile() throws IOException {} -> Option A
  4. Quick 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
A. Compilation error due to unchecked exception
B. Caught checked exception
C. No output, program crashes silently
D. Caught unchecked exception

Solution

  1. Step 1: Identify exception type

    Dividing by zero causes an ArithmeticException, which is an unchecked exception.
  2. Step 2: Check catch block handling

    The catch block catches ArithmeticException and prints "Caught unchecked exception".
  3. Final Answer:

    Caught unchecked exception -> Option D
  4. Quick 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:
public void readFile() {
  FileReader fr = new FileReader("file.txt");
}

What is the error and how to fix it?
medium
A. FileReader constructor syntax is wrong; remove parentheses.
B. FileReader constructor throws checked IOException; add try-catch or declare throws.
C. FileReader is an unchecked exception; no fix needed.
D. FileReader must be imported from java.util package.

Solution

  1. Step 1: Identify exception type from FileReader

    The FileReader constructor throws a checked IOException.
  2. Step 2: Fix by handling or declaring exception

    We must either surround with try-catch or declare throws IOException in method signature.
  3. Final Answer:

    FileReader constructor throws checked IOException; add try-catch or declare throws. -> Option B
  4. Quick 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
A. Use try-catch for IOException inside method; do not catch RuntimeExceptions.
B. Declare method throws IOException; catch RuntimeExceptions inside method.
C. Catch both IOException and RuntimeException inside method.
D. Do not catch any exceptions; let all propagate.

Solution

  1. Step 1: Understand handling checked exceptions

    Checked exceptions like IOException should be handled or declared. Here, handling internally means try-catch inside method.
  2. Step 2: Understand unchecked exceptions handling

    Unchecked exceptions (RuntimeExceptions) usually indicate bugs and should propagate to caller, so do not catch them here.
  3. Final Answer:

    Use try-catch for IOException inside method; do not catch RuntimeExceptions. -> Option A
  4. Quick 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