Наследование и классы-коллекции

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

Итак, каждый блок catch() и перехватывает один определенный тип исключений. Если требуется одинаково обработать нескольк

о типов исключений, то можно воспользоваться тем, что классы-исключения образуют иерархию. Таким образом, перемещаясь по иерархии классов-исключений, мы можем обрабатывать сразу более или менее крупные совокупности исключений. Рассмотрим подробнее иерархию классов-исключений.

Иерархия классов-исключений

Все классы-исключения расширяют класс Throwable — непосредственное расширение класса Object.

У класса Throwable и у всех его расширений по традиции два конструктора:

· Throwable () — конструктор по умолчанию;

· Throwable (String message) — создаваемый объект будет содержать произвольное сообщение message.

Записанное в конструкторе сообщение можно получить затем методом getMessage (). Если объект создавался конструктором по умолчанию, то данный метод возвратит null.

Метод toString() возвращает краткое описание события.

Три метода выводят сообщения обо всех методах, встретившихся по пути "полета" исключения:

· printstackTrace() — выводит сообщения в стандартный вывод, как правило, это консоль;

· printStackTrace(PrintStream stream) — выводит сообщения в байтовый поток stream;

· printStackTrace(PrintWriter stream) — выводит сообщения в символьный поток stream.

У класса Throwable два непосредственных наследника — классы Error и Exception. Они не добавляют новых методов, а служат для разделения классов-исключений на два больших семейства — семейство классов-ошибок (error) и семейство собственно классов-исключений (exception).

Классы-ошибки, расширяющие класс Error, свидетельствуют о возникновении сложных ситуаций в виртуальной машине Java. Их обработка требует глубокого понимания всех тонкостей работы JVM. Ее не рекомендуется выполнять в обычной программе. Не советуют даже выбрасывать ошибки оператором throw. He следует делать свои классы-исключения расширениями класса Error или какого-то его подкласса.

Имена классов-ошибок, по соглашению, заканчиваются словом Error.

Классы-исключения, расширяющие класс Exception, отмечают возникновение обычной нештатной ситуации, которую можно и даже нужно обработать. Такие исключения следует выбросить оператором throw. Классов-исключений очень много, более двухсот. Они разбросаны буквально по всем пакетам J2SDK. В большинстве случаев вы способны подобрать готовый класс-исключение для обработки исключительных ситуаций в своей программе. При желании можно создать и свой класс-исключение, расширив класс Exception или любой его подкласс.

Среди классов-исключений выделяется класс RuntimeException — прямое расширение класса Exception. В нем и его подклассах отмечаются исключения, возникшие при работе JVM, но не столь серьезные, как ошибки. Их можно обрабатывать и выбрасывать, расширять своими классами, но лучше доверить это JVM, поскольку чаще всего это просто ошибка в программе, которую надо исправить. Особенность исключений данного класса в том, что их не надо отмечать в заголовке метода пометкой throws.

Имена классов-исключений, по соглашению, заканчиваются словом Exception.

Порядок обработки исключений

Блоки catch () {} перехватывают исключения в порядке написания этих блоков. Это правило приводит к интересным результатам.

try{

// Операторы, вызывающие исключения

}catch(Exception e){

// Какая-то обработка

}catch(RuntimeException re){

// Никогда не будет выполнен!

}

Второй блок не будет выполняться, поскольку исключение типа RuntimeException является исключением общего типа Exception и будет перехватываться предыдущим блоком catch () {}.

Страница:  1  2  3  4  5  6  7  8  9  10  11 


Другие рефераты на тему «Программирование, компьютеры и кибернетика»:

Поиск рефератов

Последние рефераты раздела

Copyright © 2010-2024 - www.refsru.com - рефераты, курсовые и дипломные работы