Проверенные исключения не распространяются в цепочке

Почему проверенные исключения не распространяются в цепочке?

public static void m() {
    FileReader file = new FileReader("C:\\test\\a.txt");
    BufferedReader fileInput = new BufferedReader(file);

}
public static void n() {
    m();
}
public static void o() {
    n();
}

public static void main(String[] args) {
    try {
        o();
    }
    catch(Exception e) {
        System.out.println("caught exception");
    }

}

И почему все проверенные исключения должны быть обработаны?

1 ответ

Потому что вы не объявили их в объявлении метода. Проверенные исключения должны быть либо обработаны в методе, где они могут возникать, либо они должны быть объявлены как "выброшенные" этим методом.

Измените свой код на:

public static void m() throws IOException { // <-- Exception declared to be "thrown"
    FileReader file = new FileReader("C:\\test\\a.txt");
    BufferedReader fileInput = new BufferedReader(file);

}
public static void n() throws IOException {
    m();
}
public static void o() throws IOException {
    n();
}

public static void main(String[] args) {
    try {
        o();
    }
    catch(Exception e) {
        System.out.println("caught exception");
    }

}
Другие вопросы по тегам