Исключения Java: исключение MyException никогда не брошено в организм от соответствующего заявления TRY TRY
Вопрос
Я понимаю идею этой ошибки. Но я думаю, я не понимаю, как это работает вниз по стеку вызовов.
Файл main.java:
public static void main(String[] args) {
try {
Function1();
} catch (myException e) {
System.out.println(e.getMessage());
}
}
public static void Function1() {
Function2();
}
Функция2 существует в другом файле:
File2.java
public void Function2() throws myException {
....
}
Поэтому через несколько вызовов (по стеке вызовов) у меня есть функция2, которая указывает требование «бросает MyException». Как приходите главной функцией (где находятся ошибка на), не распознает, что я бросаю MyException вниз по линии?
Любое руководство в том, где «дыра» в моем «знаниях исключения» лежит будет очень оценена.
Aitee,
Решение
Дыра в том, что Function2
заявляет, что это бросает исключение, но Function1
не. Java не проходит через возможные иерархии вызовов, но идет напрямую за то, что вы объявляете в throws
заявления.
Function1
уходит с не объявлять бросок, вероятно, потому что myException
это RuntimeException
.
Другие советы
Ваша проблема в том, что Function1()
не заявляет, что это throws myException
- Это означает, что должно быть 2 ошибки компиляции: один из исключения, не попадающих или заявляемого, и один о том, чтобы поймать исключение, которое не объявлено.