Почему я не могу выбросить исключение (проверено) в методе, который вызывается в операторе try catch? - PullRequest
2 голосов
/ 29 апреля 2011
 public class simple {
    public static void main(String[] args) {
        try {
            System.out.print("hello ");
            throwit();
        } catch (Exception re) {
            System.out.print("caught ");
        }
    }

    public static void throwit(){  // line number 11
        throw new Exception();  // line number 12
    }
   }

почему это дает мне ошибку компиляции в строке номер 12. Если я использую throws Exception для строки номер 11, тогда он работает нормально.Если я выбрасываю подкласс Exception (в строке № 12), тогда он работает правильно ... почему так? ...

Я хочу знать, что на самом деле происходит в обратной стороне (как компилятор показывает ошибку для этого)

1 Ответ

10 голосов
/ 29 апреля 2011

У вас есть метод, который выдает проверенное исключение, но его сигнатура метода не указывает, что он может это сделать. Все проверенные исключения должны быть объявлены в сигнатуре метода и явно обработаны блоками try / catch или путем повторного броска; Вот что такое определение проверенного исключения. :)

Эта строка:

public static void throwit()

должно быть

public static void throwit() throws Exception
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...