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
class включает прямых потомков (объекты, которые наследовались непосредственно от Throwable
class) и косвенные потомки (объекты, которые наследовались от дочерних элементов или внуков Throwable
class). Число ниже иллюстрирует иерархию class Throwable
class и его старшие значащие подклассы. Поскольку можно видеть, Throwable
имеет двух прямых потомков: Error
и Exception
class Throwable.
Когда отказ динамического подключения или другой твердый отказ в виртуальной машине Java происходят, виртуальная машина бросает Error
. Простые программы обычно не ловят или бросают Error
s.
Большинство броска программ и объектов выгоды, которые происходят из Exception
class. Exception
указывает, что проблема произошла, но это не серьезная системная проблема. Большинство программ, которые Вы пишете, бросит и поймает Exception
s в противоположность Error
s.
Платформа Java определяет много потомков Exception
class. Эти потомки указывают на различные типы исключений, которые могут произойти. Например, IllegalAccessException
сигналы, что определенный метод не мог быть найден, и NegativeArraySizeException
указывает что программа, предпринятая, чтобы создать массив с отрицательным размером.
Один Exception
подкласс, RuntimeException
, резервируется для исключений, которые указывают на неправильное использование API. Пример исключения на этапе выполнения NullPointerException
, который происходит, когда метод пытается получить доступ к элементу объекта через a null
ссылка. Раздел RuntimeException
.