Философия Java

         

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


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

  • Throw( )

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

  • ThrowNew( )

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

  • ExceptionOccurred( )

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

  • ExceptionDescribe( )

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

  • ExceptionClear( )

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

  • FatalError( )

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

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

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



    Содержание раздела