Spec-Zone .ru
спецификации, руководства, описания, API
След: Существенные Классы
Урок: Исключения
Как Выдать Исключения
Домашняя страница > Существенные Классы > Исключения

Как Выдать Исключения

Прежде, чем можно будет поймать исключение, некоторый код где-нибудь должен бросить тот. Любой код может выдать исключение: Ваш код, код от пакета, записанного кем-то еще, такого как пакеты, которые идут с платформой Java, или средой выполнения Java. Независимо от какого выдает исключение, оно всегда бросается с throw оператор.

Как Вы, вероятно, заметили, платформа Java обеспечивает многочисленные классы исключений. Все классы являются потомками Throwable class, и все позволяют программам дифференцироваться среди различных типов исключений, которые могут произойти во время выполнения программы.

Можно также создать свои собственные классы исключений, чтобы представить проблемы, которые могут произойти в пределах классов, которые Вы пишете. Фактически, если Вы - разработчик пакета, Вам, возможно, придется создать Вашу собственную группу классов исключений, чтобы позволить пользователям дифференцировать ошибку, которая может произойти в Вашем пакете от ошибок, которые происходят в платформе Java или других пакетах.

Можно также создать объединенные в цепочку исключения. Для получения дополнительной информации см. Цепочечный раздел Исключений.

Оператор броска

Все методы используют throw оператор, чтобы выдать исключение. throw оператор требует единственного параметра: объект throwable. Объекты Троуобла являются экземплярами любого подкласса Throwable class. Вот пример a throw оператор.

throw someThrowableObject;

Давайте смотреть на throw оператор в контексте. Следующий pop метод берется от class, который реализует общий объект стека. Метод удаляет вершину из стека и возвращает объект.

public Object pop() {
    Object obj;

    if (size == 0) {
        throw new EmptyStackException();
    }

    obj = objectAt(size - 1);
    setObjectAt(size - 1, null);
    size--;
    return obj;
}

pop проверки метода, чтобы видеть, являются ли какие-либо элементы на стеке. Если стек пуст (его размер равен 0), pop инстанцирует нового EmptyStackException объект (элемент java.util) и броски это. Раздел Классов исключений Создания в этой главе объясняет, как создать Ваши собственные классы исключений. Пока, все, что Вы должны помнить, - то, что можно бросить только объекты, которые наследовались от java.lang.Throwable class.

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

Класс Throwable и Его Подклассы

Объекты, которые наследовались от Throwable class включает прямых потомков (объекты, которые наследовались непосредственно от Throwable class) и косвенные потомки (объекты, которые наследовались от дочерних элементов или внуков Throwable class). Число ниже иллюстрирует иерархию class Throwable class и его старшие значащие подклассы. Поскольку можно видеть, Throwable имеет двух прямых потомков: Error и Exception.

class Throwable и его старшие значащие подклассы.

class Throwable.

Ошибочный Класс

Когда отказ динамического подключения или другой твердый отказ в виртуальной машине Java происходят, виртуальная машина бросает Error. Простые программы обычно не ловят или бросают Errors.

Класс исключений

Большинство броска программ и объектов выгоды, которые происходят из Exception class. Exception указывает, что проблема произошла, но это не серьезная системная проблема. Большинство программ, которые Вы пишете, бросит и поймает Exceptions в противоположность Errors.

Платформа Java определяет много потомков Exception class. Эти потомки указывают на различные типы исключений, которые могут произойти. Например, IllegalAccessException сигналы, что определенный метод не мог быть найден, и NegativeArraySizeException указывает что программа, предпринятая, чтобы создать массив с отрицательным размером.

Один Exception подкласс, RuntimeException, резервируется для исключений, которые указывают на неправильное использование API. Пример исключения на этапе выполнения NullPointerException, который происходит, когда метод пытается получить доступ к элементу объекта через a null ссылка. Раздел Исключения Непроверенные — Противоречие обсуждает, почему большинство приложений не должно бросить исключения на этапе выполнения или подкласс RuntimeException.


Проблемы с примерами? Попытайтесь Компилировать и Выполнить Примеры: FAQ.
Жалобы? Поздравление? Предложения? Дайте нам свою обратную связь.

Предыдущая страница: Определение Исключений, выданных Методом
Следующая страница: Цепочечные Исключения