Исключения Java: исключение MyException никогда не брошено в организм от соответствующего заявления TRY TRY

StackOverflow https://stackoverflow.com/questions/4317643

Вопрос

Я понимаю идею этой ошибки. Но я думаю, я не понимаю, как это работает вниз по стеку вызовов.

Файл 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 ошибки компиляции: один из исключения, не попадающих или заявляемого, и один о том, чтобы поймать исключение, которое не объявлено.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top