phi...@apache.org writes: > Author: philip > Date: Thu Jul 6 20:56:14 2017 > New Revision: 1801108 > > URL: http://svn.apache.org/viewvc?rev=1801108&view=rev > Log: > Add exception checks to some of the JavaHL native code to avoid JVM > warnings about JNI problems of the form: > > WARNING in native method: JNI call made without checking exceptions when > required to >
I've upgraded my JDK and it produced all these warnings. I'm not sure of the rules for JNI exception checking, take Iterator.cpp for example. The call to JNIUtil::getInv() in Iterator::next() needs to be checked or the warning is generated: jobject Iterator::next() const { if (!m_jiterator) return NULL; JNIEnv* env = JNIUtil::getEnv(); if (JNIUtil::isJavaExceptionThrown()) return NULL; static jmethodID next_mid = 0; however similar code in Iterator::hasNext() doesn't need the check, at least as far as the warning is concerned: bool Iterator::hasNext() const { if (!m_jiterator) return false; JNIEnv* env = JNIUtil::getEnv(); static jmethodID hasNext_mid = 0; Both functions are used by the testsuite but only Iterator::next() causes the warning. Is Iterator::hasNext() correct to omit the check or is this a limitation of the warning system? Should all calls to JNIUtil::getEnv() be checked? -- Philip