处理异常
异常为您提供了一种用于处理应用程序中错误的方式。 Java™ 具有明确且一致的异常处理策略,但 C/C++ 代码没有。 因此, Java JNI 在检测到故障时不会抛出异常。 JNI 不了解应用程序的本机代码如何对其进行处理,甚至不了解是否能对其进行处理。
JNI 规范要求延迟异常;本机代码负责检查是否发生异常。 针对此目的提供了一组 JNI API。 如果异常暂挂,那么带有返回码的 JNI 函数始终设置一个错误。 如果 JNI 函数返回,那么不需要检查异常success,但必须在错误情况下检查异常。 如果不检查,那么下一次通过 JNI 时,JNI 代码将检测到暂挂异常并抛出该异常。 如果稍后并且可能在代码中与创建位置不同的另一个位置抛出异常,那么异常将难于调试。
注: 与 ExceptionOccurred 调用相比, JNI ExceptionCheck 函数是执行异常检查的最佳方法,因为 ExceptionOccurred 调用必须创建本地引用。