Главная » Java » Асинхронные исключения Java

0

Результатом работы инструкции throw служит синхронное (synchronous) исключение – то же самое происходит, например, при целочисленном делении на нуль: исключение возникает как непосредственный итог выполнения определенной инструкции, причем не важно, выбрасывается ли оно явно, командой throw, либо косвенно, исполняющей системой, обнаружившей факт деления на нуль. Асинхронное (asynchronous) исключение, с другой стороны, может возникнуть внезапно, независимо от того, какая именно инструкция прикладной программы выполняется в данный момент.

Асинхронные исключения проявляются в двух ситуациях. Первая связана с внутренними ошибками виртуальной машины Jауа – такие исключения считаются асинхронными, Поскольку их появление провоцируется кодом виртуальной машины, а не инструкциями приложения. Понятно, что с подобными ошибками вам кaк автору прикладной программы в подавляющем большинстве случаев справиться не удастся.

Ко второй группе причин возникновения асинхронных исключений относится использование устаревших и не рекомендованных для применения методов Thread.stop, а также подобных им разрешенных методов stopThread из состава Java™ Virtual Machine Debug Interface (JVMDI) – nаtivе-интерфейса виртуальной машины, позволяющего проверять состояние работающих приложений Java и управлять ими. Указанные методы предоставляют возможность генерирования асинхронных исключений различных категорий (объявляемых и необъявляемых) в любой момент на протяжении цикла выполнения конкретного Потока вычислений. Подобные механизмы рискованны и опасны просто по своей внутренней природе, поэтому их применение в большинстве случаев не поощряется (подробно эта тема освещена в главе 10).

Источник: Арнолд, Кен, Гослинг, Джеймс, Холмс, Дэвид. Язык программирования Java. 3-е изд .. : Пер. с англ. – М. : Издательский дом «Вильяме», 2001. – 624 с. : ил. – Парал. тит. англ.

По теме:

  • Комментарии