2010-11-29 30 views
2

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); 

Répondre

2

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.

+0

Un problème similaire existe avec la méthode Class.newInstance(), qui permet également de lancer des exceptions non déclarées. – iirekm

+0

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. –