Que se passe-t-il si un DLL JNI déclenche une exception Java et que la définition de la méthode java ne déclare pas cette exception (pas throws clause)?Exceptions non déclarées dans JNI
code:
private native void jniDoSomething(int someValue);
Que se passe-t-il si un DLL JNI déclenche une exception Java et que la définition de la méthode java ne déclare pas cette exception (pas throws clause)?Exceptions non déclarées dans JNI
code:
private native void jniDoSomething(int someValue);
Exception sera jeté de toute façon. Juste vérifié cela.
Je pense qu'un tel comportement est dû au fait que le mot-clé throws
n'affecte en aucun cas le code natif. Il n'y a pas de possibilité de vérifier si le code natif lève l'exception appropriée et même dans le fichier d'en-tête il n'y a aucune mention au sujet des exceptions.
Un problème similaire existe avec la méthode Class.newInstance(), qui permet également de lancer des exceptions non déclarées. – iirekm
Oui, mon problème était quelque chose de différent, le nom de l'exception était faux, la fonction native n'a pas pu trouver la classe, et n'a levé aucune exception du tout. –