Проверенные исключения не распространяются в цепочке
Почему проверенные исключения не распространяются в цепочке?
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");
}
}