Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Haulmont-презентации Java / Haulmont. java_se_3.1.ppt
Скачиваний:
65
Добавлен:
16.03.2015
Размер:
691 Кб
Скачать
☆

Исключения

Все права защищены. www.haulmont.ru info@haulmont.com

© HAULMONT, 2013

Цели занятия

2 Изучить:

•Понятие исключения, иерархию исключений в Java

•Объявляемые и необъявляемые исключения

•Синхронные и асинхронные исключения

•Выбрасывание исключений

•Предложение throws

• try, catch и finally

Все права защищены. www.haulmont.ru info@haulmont.com

© HAULMONT, 2013

 

 

Понятие исключения

3

•

Исключения – это объекты

 

 

•

Все типы исключений должны наследовать класс

 

 

Throwable или один из классов, производных от него

 

•

Класс Throwable содержит поле типа String,

 

 

предназначенное для хранения информации об

 

 

исключении

 

•

Обычно новые типы исключений создаются на основе

 

 

класса Exception, производного от Throwable

 

•

Исполняющая система способна выбрасывать объекты

 

 

исключений двух основных семейств типов – производных

 

 

от RuntimeException либо расширяющих класс ошибок

 

 

Error

 

•

На практике выбор типа исключения, создаваемого

 

 

разработчиком, основывается на архитектуре и логике

программы, поэтому прикладные исключения могут быть наследниками как Exception, так и RuntimeException

Все права защищены. www.haulmont.ru info@haulmont.com

© HAULMONT, 2013

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

4

Object

 

 

 

 

Throwable

 

Error

Exception

AbstractMethodError …

RuntimeException

Другие типы

 

исключений

 

 

IndexOutOfBoundsException

…

Все права защищены. www.haulmont.ru info@haulmont.com

© HAULMONT, 2013

Объявляемые и необъявляемые

исключения

5• Исключения типов Error свидетельствуют о весьма

серьёзных ошибках, которые не могут быть отловлены (либо допускают такую возможность в редких случаях и с немалым трудом), а их последствия, как правило, не поддаются преодолению

•С формальной точки зрения вполне допустимо расширять классы RuntimeException или Error с

целью создания собственных необъявляемых исключений, т.е. таких исключений, которые могут быть сгенерированы без предварительного объявления их в предложении throws

•Уместность наследования от того или иного класса исключений определяется исходя из логики объявляемых и необъявляемых исключений

Все права защищены. www.haulmont.ru info@haulmont.com

© HAULMONT, 2013

Объявляемые и необъявляемые

исключения

6 Примеры классов, наследующих от RuntimeException

•ArithmeticException extends RuntimeException

Возникла исключительная ситуация, связанная с

ошибкой при выполнении арифметического вычисления (например, с попыткой целочисленного деления на нуль)

•IndexOutOfBoundsException extends RuntimeException

Задано значение индекса массива или содержимого

строки типа String, не принадлежащее допустимому диапазону

Все права защищены. www.haulmont.ru info@haulmont.com

© HAULMONT, 2013

Объявляемые и необъявляемые

исключения

7Примеры классов, наследующих от Error

•AbstractMethodError extends IncompatibleClassChangeError

Вызван абстрактный метод класса, не содержащий реализации

•IncompatibleClassChangeError extends LinkageError

В процессе загрузки класса или интерфейса выявлено изменение, несовместимое с имеющейся информацией об этом типе (например, в период между моментами компиляции и запуска кода на выполнение из состава типа был удален метод, не относящийся к private)

• LinkageError extends Error

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

Все права защищены. www.haulmont.ru info@haulmont.com

© HAULMONT, 2013

Объявляемые и необъявляемые

исключения

8• Большинство типов RuntimeException и Error поддерживает, самое меньшее, по два конструктора: первый не предусматривает задания параметров, а второй в качестве параметра принимает объект String с содержательным описанием природы ошибки

•Строка описания может быть получена с помощью метода getMessage()

•Говоря об исключениях, мы будем иметь в виду преимущественно объявляемые исключения

•В случае применения объявляемых исключений компилятор получает возможность проверить, действительно ли метод генерирует только те исключения, которые обнародованы в его объявлении

Все права защищены. www.haulmont.ru info@haulmont.com

© HAULMONT, 2013

Объявляемые и необъявляемые

исключения

9• Все исключения классов, наследующих Exception, относятся к категории объявляемых

•Исключения времени выполнения и объекты ошибок классов RuntimeException, Error и производных от них принадлежат к группе необъявляемых

исключений

•Объявляемые исключения служат для представления ситуаций, которые, несмотря на их «исключительный» характер, вполне предсказуемы, и поскольку они происходят, с ними необходимо уметь обращаться

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

Все права защищены. www.haulmont.ru info@haulmont.com

© HAULMONT, 2013

 

 

Объявляемые и необъявляемые

10

 

исключения

•

Иногда бывает полезно иметь в своем распоряжении более

 

 

 

полную информацию о природе ошибки, не только ту

 

 

единственную строку текста, которая предусмотрена классом

 

 

Exception

 

•

В таких случаях класс Exception может быть расширен с

 

 

добавлением недостающих элементов данных, которые

 

 

обычно передаются конструктору в виде аргументов

Пример 1

public class NoSuchAttributeException extends Exception { public String attrName;

public NoSuchAttributeException(String name) {

super (“Атрибут с именем \”” + name + “/” не найден“); attrName = name;

}

}

Все права защищены. www.haulmont.ru info@haulmont.com

© HAULMONT, 2013

Соседние файлы в папке Haulmont-презентации Java