|
II. Possibilités offertes par le JNI
4. Gérer des exceptions Java
Avec JNI, les exceptions Java peuvent être générées, interceptées, imprimées et
retransmises exactement comme dans un programme Java. Mais c'est au programmeur d'appeler des fonctions JNI
dédiées pour traiter les exceptions. Voici les fonctions JNI pour gérer les exceptions :
- Throw( ) : Émet un objet exception existant. Utilisé dans les méthodes natives pour
réémettre une exception ;
- ThrowNew( ) : Génère un nouvel objet exception et l'émet ;
- ExceptionOccurred( ) : Détermine si une exception a été émise et pas encore
effacée ;
- ExceptionDescribe( ) : Imprime une exception et la trace correspondante dans la pile réservée
au code natif ;
- ExceptionClear( ) : Efface une exception en cours ;
- FatalError( ) Lève une erreur fatale.
La plupart des fonctions JNI peuvent générer des exceptions, et comme le langage ne dispose pas de
construction équivalente à un bloc try-catch() Java, il faut utiliser ExceptionOccurred( )
après chaque appel à une fonction JNI pour voir si une exception a été émise. Si on
détecte une exception, on peut choisir de la traiter. Il faut cependant s'assurer que l'exception est effacée
au final. Ceci peut être fait en utilisant ExceptionClear( ).
Il est important de s'assurer que les exceptions sont effacées car sinon des résultats imprévisibles
peuvent survenir à l'appel d'une nouvelle fonction JNI. Il y a peu de fonctions JNI pouvant être appeler sans risque
durant une exception ; parmi celles-ci évidemment, il y a toutes les fonctions de traitement des exceptions.

|