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

Исключения

Все права защищены. 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