在CPP中,可以调用 ExceptionOccurred 和 ExceptionCheck 来检查处理异常
jthrowable flag = env->ExceptionOccurred();
{
   /* Handle exception here or free up any resources held
      Exception remains pending until control returns back
      to the Java code.
   */
   return;
}
jboolean flag = env->ExceptionCheck();
if (flag) {
   /* Handle exception here or free up any resources held
      Exception remains pending until control returns back
      to the Java code.
   */
   env->ExceptionClear();
   return;
}
在 rust 的 jni 这个crate里, 上述两个函数,被转换成了 exception_occurred 和 exception_check
在rust调用 call_static_method 或者 call_method, 都不会执行异常处理,需要你自己 处理它们
let result = je.call_static_method(cls, "renderTo", "(II[B)V", &[
    JValue::from(width),
    JValue::from(height),
    JValue::from(rgbs2),
])?;
je.exception_check()?;
在调用 可能抛出Java异常的JNI函数后,总是调用 ExceptionCheck 或 ExceptionOccurred 来检查下异常。
总是检查从 JNI函数返回的值。