Экзамен SCJP: Обработка исключений - PullRequest
1 голос
/ 17 июля 2009

Я учусь на экзамене по сертификации программистов Java (SCJP). Вопрос об исключениях: когда обрабатывать исключения, лучше всего обрабатывать определенное исключение, например NumberFormatException или перехватывать все исключения, используя родительский Exception class?

Основой для моих непроверенных исключений по курсу являются в основном RunTimeException, которые в основном являются результатом программной ошибки. Означает ли это, что когда я выбрасываю исключение вручную, мне лучше использовать:

new Exception("... my message...")

а что мне не справиться RunTimeException? Обрабатывать только проверенные исключения?

Ответы [ 2 ]

2 голосов
/ 17 июля 2009

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

Что касается отлова, проверенного Exceptions, вы должны обработать Exception как можно точнее:

try {
} catch (FileNotFoundException fnfe){
} catch (IOException ioe){
} catch (Exception e){
}

Когда вы бросаете Exceptions, вы почти никогда не должны использовать throw new Exception(). Бросьте исключение, которое может дать кому-то, кто видит это, больше информации о том, что случилось, когда это было брошено. (т. е. IndexOutOfBounds или NullPointerExceptions. Они дают конкретную информацию, даже не смотря на сообщение или трассировку стека.)

Если вы хотите выбросить Exception, и вы не думаете, что Java API имеет тот, который соответствует вашему случаю, лучше всего создать подкласс или расширить исключение, дав ему очень информативное имя.

0 голосов
/ 17 июля 2009

Вы можете подкласс Exception (вместо RuntimeException) в этих случаях.

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