Compile Error: Unhandled Exception

error: unreported exception IOException; must be caught or declared to be thrown

Quick Answer

You are calling a method that throws a checked exception without handling it. Add a try-catch block or declare the exception in your method signature.

Why This Happens

Java's checked exception system requires that checked exceptions (everything except RuntimeException and Error subclasses) are either caught with try-catch or declared in the method's throws clause. This is a compile-time enforcement of exception handling.

The Problem

public void readFile() {
    FileReader reader = new FileReader("data.txt"); // Throws IOException - not handled
}

The Fix

// Option 1: Catch the exception
public void readFile() {
    try {
        FileReader reader = new FileReader("data.txt");
    } catch (IOException e) {
        System.err.println("Cannot read file: " + e.getMessage());
    }
}

// Option 2: Declare in throws clause
public void readFile() throws IOException {
    FileReader reader = new FileReader("data.txt");
}

Step-by-Step Fix

  1. 1

    Identify the checked exception

    Read the error message for the exception type that must be handled.

  2. 2

    Decide handling strategy

    Choose between catching the exception (if you can handle it) or declaring it in the throws clause (if the caller should handle it).

  3. 3

    Add try-catch or throws

    Wrap the call in try-catch for local handling, or add throws to the method signature to propagate it.

Bugsly catches this automatically

Bugsly's AI analyzes this error pattern in real-time, explains what went wrong in plain English, and suggests the exact fix — before your users even report it.

Try Bugsly free