Категории исключений
11
Общие исключения
12
Правило «обрабатывай или предупреждай»
(handle-or-declare)
Принципы использования правила:
•Обрабатывайте исключения с помощью оператора try-catch-finally
•Предупреждайте, что метод может привести к какому-то исключению с помощью оператора throws:
void trouble() throws IOException { ... }
void trouble() throws IOException, MyBxceptlon { ... }
При этом вы не обязаны предупреждать об исключениях времени
выполнения или ошибках, но можете это сделать.
Обрабатывайте исключение, когда вы можете это сделать;
объявляйте исключение, когда вы вынуждены так поступить.
13
Исключения при переопределении методов
Переопределяемый метод может:
•не выбрасывать исключений вообще;
•одно или более исключений, выбрасываемых родительским исходным методом;
•одно или более подклассов исключений, выбрасываемых родительским исходным методом.
Переопределяемый метод не может:
•дополнительных исключений, которые не выбрасываются исходным методом;
•исключений, родительских по отношению к выбрасываемым исходным методом.
14
Исключения при переопределении методов – пример
15
Создание собственных (пользовательских) исключений
Переопределение метода getMessage(), который наследуется в
классе Exception, может быть использовано для указания
причины пользовательского исключения.
16
Обработка пользовательских исключений
Метод может выбрасывать пользовательское
контролируемое исключение:
17
Обработка пользовательских исключений
При этом другой метод может использовать оператор
try-catch для перехвата пользовательского исключения:
18
Обработка нескольких исключений
19
Отладка с помощью проверочных утверждений (assertions)
• Синтаксис:
assert <boolean_expression>;
assert <boolean_expression> : <detail_expression>;
•Если <boolean_expression> принимает значение false, то выбрасывается исключение AssertionError.
•Второй аргумент преобразуется в строку и используется как поясняющий текст в исключении AssertionError
20