В Java исключение, выданное нами, не перехватывается обработчиком по умолчанию? Правильно - PullRequest
2 голосов
/ 13 июня 2011

Но тогда в следующей программе, когда исключение повторно вызывается в операторе catch без предложения throws, ошибки не возникает ??Как?

Class Throwdemo {
  static void demoproc(){
    try{
        throw new NullPoinerException ("demo");
    }catch(NullPointerException e) {
        System.out.println("Caught inside demoproc."); 
        throw e;
    }
  }
  public static void main(String Args[]){
    try[
        demoproc();
    }catch(NullPointerException e) {
            System.out.println("Recaught : " + e);
    }
}
}

Выход составляет

Caught inside demoproc.
Recaught : java.lang.NullPointerException: demo

Ответы [ 4 ]

5 голосов
/ 13 июня 2011

Требуется только throws предложение для отмеченных исключений .

3 голосов
/ 13 июня 2011

Соблюдайте эти строки:

public static void main(String Args[]){
    try[

У try есть скобка, а не скобка. Возможно, вы неудачно скомпилировали программу, а затем повторно запустили старый файл класса.

2 голосов
/ 13 июня 2011

Потому что NullPoinerException - это RuntimeException. Это не нуждается в throws предложении.

0 голосов
/ 13 июня 2011

Невозможно получить то, что вы имели в виду как обработчик по умолчанию. Когда исключение брошено

throw new NullPoinerException ("demo");

Это перехватывается блоком try catch, окружающим его.

Блок Catch в свою очередь выдает исключение, которое перехватывается блоком try catch в main.

Надеюсь, это поможет.

Редактировать после вашего комментария: Также исключение NullPoinerException является непроверенным исключением, поэтому не нужно упоминать как броски.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...