Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
JavaEx.docx
Скачиваний:
27
Добавлен:
10.05.2015
Размер:
212.43 Кб
Скачать

Асинхронные исключения.

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

Асинхронные исключения в языке Java встречаются очень редко. Они происходят только в результате:

  1. Вызова stop методов класса Thread или ThreadGroup 

  2. Внутренней ошибки (InternalError)  в виртуальной машине языка Ява

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

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

Возможные исключения Ява-программ организованы в иерархии классов, содержащейся в классе Throwable , непосредственном подклассе Object. Классы Exсeption и Error - непосредственные подклассы класса Throwable. Класс RuntimeException - непосредственный подкласс класса Exсeption.

Классы исключений, объявленные стандартными пакетами java.lang, java.util, java.io и java.net, называются стандартными классами исключений.

Java-программы могут использовать ранее существующие классы исключений в операторах throw, или определять дополнительные классы исключений, как подклассы класса Throwable или любого из его подклассов. Чтобы воспользоваться преимуществами Java -системы проверки времени компиляции для обработчиков исключений, обычно определяют большинство классов новых исключений как классы проверяемых исключений и как подклассы класса Exсeption, которые не являются подклассами RuntimeException.

Классы Exception и RuntimeException

Класс Exception - суперкласс всех исключений, обработки которых могут требовать обычные программы.

Стандартные исключения времени выполнения

Класс RuntimeException - подкласс класса Exception. Подклассы класса RuntimeException - классы непроверяемых исключений.

Пакет java.lang определяет следующие стандартные непроверяемые исключения времени выполнения, которые, подобно всем другим классам пакета java.lang, неявно импортированы, и поэтому на них можно ссылаться с помощью их простых имен:

  1. ArithmeticException: возникла исключительная арифметическая ситуация, такая как операция целочисленного деления с нулевым знаменателем.

  2. ArrayStoreException: была сделана попытка сохранить в массиве компонент тип значения которого не совместим с типом компонент массива.

  3. ClassCastException: была сделана попытка привести  ссылку на объект несоответствующего типа.

  4. IllegalArgumentException: метод передал недействительный или несоответствующий аргумент или вызывает несоответствующий объект. Подклассами этого класса являются:

  1. IllegalThreadStateException: поток не был в соответствующем режиме для требуемого действия.

  2. NumberFormatException: была сделана попытка конвертировать строку в числовое выражение, но строка не имела соответствующего формата.

  3. IllegalMonitorStateException: поток попытался работать с другими потоками  или давать сведения  другим нитям, имея дело с объектами, которые она не блокировала.

  4. IndexOutOfBoundsException: индекс ( массива, строки или вектора) или поддиапазон,заданный с помощью двух значений индекса или индексом и длиной, были вне диапазона.

  5. NegativeArraySizeException: была сделана попытка, создать массив с отрицательной длиной .

  6. NullPointerException: была сделана попытка использовать пустую ссылку в случае, где требовалась ссылка на объект.

  7. SecurityException: было обнаружено нарушение безопасности.

Пакет java.util определяет следующие дополнительные стандартные непроверяемые исключения времени выполнения:

  1. java.util.EmptyStackException: была сделана попытка доступа к элементу пустого стека.

  2. java.util.NoSuchElementException: была сделана попытка доступа к элементу пустого вектора.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]