Обработка исключительных ситуаций
Обработка исключительных ситуаций
Исключительные ситуации (exceptions) могут возникнуть во время выполнения (runtime) программы, прервав ее обычный ход. К ним относится деление на нуль, отсутствие загружаемого файла, отрицательный или вышедший за верхний предел индекс массива, переполнение выделенной памяти и масса других неприятностей, которые могут случиться в самый неподходящий момент.Блоки перехвата исключения
Мы можем перехватить и обработать исключение в программе. При описании обработки применяется бейсбольная терминология. Говорят, что исполняющая система или программа "выбрасывает" (throws) объект-исключение.Часть заголовка метода throws
То обстоятельство, что метод не обрабатывает возникающее в нем исключение, а выбрасывает (throws) его, следует отмечать в заголовке метода служебным словом throws и указанием класса исключения: | private static void f(int n) throws ArithmeticException{ | System.out.println(" 10 / n = " + (10 / n));Оператор throw
Этот оператор очень прост: после слова throw через пробел записывается объект класса-исключения. Достаточно часто он создается прямо в операторе throw, например: | throw new ArithmeticException(); | Оператор можно записать в любом месте программы.Иерархия классов-исключений
Все классы-исключения расширяют класс Throwable – непосредственное расширение класса object. | У класса Throwable и у всех его расширений по традиции два конструктора: | Throwable () – конструктор по умолчанию;Порядок обработки исключений
Блоки catch () {} перехватывают исключения в порядке написания этих блоков. Это правило приводит к интересным результатам. | В листинге 16.2 мы записали два блока перехвата catch () {} и оба блока выполнялись при возникновении соответствующего исключения.Создание собственных исключений
Прежде всего, нужно четко определить ситуации, в которых будет возникать ваше собственное исключение, и подумать, не станет ли его перехват невольно перехватывать также и другие, не учтенные вами исключения. | Потом надо выбрать суперкласс создаваемого класса-исключения.