java - JNI - 捕获异常并检查其类型

标签 java android exception-handling java-native-interface

我正在寻找一种方法来捕获在 Android (JAVA) 端抛出的异常并在 native 端处理它。

我需要做的是检测异常的类型并进行相应的处理。

知道它是怎么做到的吗?

最佳答案

我想通了...

if(jEnv->ExceptionCheck() == JNI_TRUE ) {
  __android_log_write(ANDROID_LOG_DEBUG, "JNI", "HAS EXCEPTION"); 
  jthrowable exceptionObj = jEnv->ExceptionOccurred();

  jclass exceptionClass = cocos2d::JniHelper::getClassID("com/companyName/example/exceptions/MyException", jEnv);
  if (jEnv->IsInstanceOf(exceptionObj, exceptionClass)) {
    __android_log_write(ANDROID_LOG_DEBUG, "JNI", "Cought MyException!"); 

    throw MyException();
  }
}

关于java - JNI - 捕获异常并检查其类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13035323/

相关文章:

java - 如何使用 HbaseTemplate "findAllBy{Column}"?

java - 如何从 actionPerformed 获取源对象,以便能够使用 getText() 方法并将文本从 JButton 输出到字符串文件?

android - 光标在没有事先 close() Android 的情况下完成

android - Intent.FLAG_ACTIVITY_NEW_TASK | 如何避免黑屏Intent.FLAG_ACTIVITY_CLEAR_TASK 设置了吗?

java - NonFatal 捕获 Throwable 可以吗?

java - 如何在 Heroku 上使用 jetty-runner 增加 Jetty 线程池大小?

android - 如果应用程序正在运行,如何强制执行 Activity ?

c++ - 私有(private)继承、友元和异常处理

c++ - 什么时候应该创建自己的异常类型?

java - 处理大型二进制文件,流式传输到存储