Философия Java


JNI и исключения в Java


С помощью JNI, Java исключения могут быть сгенерированы, перехвачены, распечатаны или вызваны повторно аналогично тому, как это делается в Java. Но при этом для работы с исключениями необходимо использовать специальные функции. Ниже приведен список JNI функций для обработки исключений:

  • Throw( )

    Выбрасывает существующий объект исключения. Используется в собственном объекте для повторного выбрасывания исключения.

  • ThrowNew( )

    Создает новый объект исключения и выбрасывает его.

  • ExceptionOccurred( )

    Определяет, было ли исключение уже выброшено, но еще не очищено.

  • ExceptionDescribe( )

    Печатает исключение и содержимое стека.

  • ExceptionClear( )

    Очищает рассматриваемое исключение.

  • FatalError( )

    Вызывает фатальную ошибку. Возврата нет.

Среди перечисленных вы не можете игнорировать ExceptionOccured( ) и ExceptionCleared( ). Большинство функций JNI способны генерировать исключения, кроме try блока у вас нет других возможностей отследить исключения, поэтому необходимо вызывать ExceptionOccured( ) после каждого вызова функции JNI для перехвата возможного исключения. При обнаружении исключения можно его перехватить и обработать (и, вероятно, сгенерировать повторно). Вы должны быть уверены однако, что исключение очищено. Это можно сделать в вашей функции вызовом ExceptionClear( ) или какой-либо другой функцией, если исключение вызвано повторно, но это должно быть сделано.

Вы должны быть уверены, что исключение очищено, потому что в противном случае вызов функции JNI будет непредсказуемым, пока исключение обрабатывается. Существует несколько функций JNI, которые можно вызывать во время обработки исключения, несомненно, все они являются функциями обработки исключения.




Начало  Назад  Вперед