【第21期】观点:人工智能到底用 GPU?还是用 FPGA?

Android-NDK开发之基础--Android JNI实例代码(四)-- JNI中的异常处理实例代码

转载 2012年03月29日 17:51:54

原文地址:http://blog.csdn.net/geolo/article/details/6168317

 class AndroidJniDemo5 {
 private native void createException() throws IllegalArgumentException; //JNI中抛出一个参数不合法异常
 private void throwException() throws NullPointerException {
  throw new NullPointerException("Java error, android123 "); //Java中产生一个空指针异常
 }
 public static void main(String args[]) {
  AndroidJniDemo5 ajd5 = new AndroidJniDemo5();
  try {
   ajd5.createException(); 
  } catch (Exception e) {
     e.printStackTrace();
  }
 }
 static {
  System.loadLibrary("AndroidJniDemo5");
 }
}

下面的JNI中的异常具体代码

JNIEXPORT void JNICALL
Java_AndroidJniDemo5_createException(JNIEnv *env, jobject obj)
{
 jthrowable throwable;
 jclass clazz = (*env)->GetObjectClass(env, obj);
 jmethodID mid = (*env)->GetMethodID(env, clazz, "throwException", "()V"); //获取Java中的throwException方法ID
 if (mid == NULL)
 {
  return;
 }

 (*env)->CallVoidMethod(env, obj, mid); //执行throwException方法

 throwable = (*env)->ExceptionOccurred(env);  //有异常发生,其实Android123提醒大家还可以使用JNI中的异常检测ExceptionCheck函数来判断

 if (throwable)  // 如果发生了异常
 {
  jclass newExceptionClazz; 
  (*env)->ExceptionDescribe(env);
  (*env)->ExceptionClear(env);

  newExceptionClazz = (*env)->FindClass(env,"java/lang/IllegalArgumentException"); //实例化一个参数不合法异常

  if (newExceptionClazz == NULL)
  {
   return;
  }
  (*env)->ThrowNew(env, newExceptionClazz, "JNI cwj exception"); //在JNI中抛出异常
 }
}

 最后我们可以看到在JNI中处理很多事情确实需要编写很多代码,同时有关类的构造符号什么的,目前的IDE和编译器无法检查,所以Android开发网提醒大家一定要记住Java签名符号的格式和规范,下一次我们给出一些例子,帮助Android NDK初学者快速了解JNI的规则。

举报

相关文章推荐

Android-NDK开发之基础--Android JNI实例代码(二)-- 获取/设置类的域或者说属性字段

转自:http://blog.csdn.net/geolo/article/details/6168313 转自:http://www.android123.com.cn/android...

Android JNI简单实例(android 调用C/C++代码)

Android的jni实例 android 的应用程序(Dalvik VM)中使用JNI(Java Native Interface)调用C/C++开发的共享库。 c/c++中调用java程序的方法以后再发。 开发环境 (eclipse + android ADT) WindowsXP SP3 JDK 1.6.0.12 VMWARE+Ubuntu Linux 8.04      (1) Eclipse中新建a

Android-NDK开发之基础--Android JNI实例代码(二)-- 获取/设置类的域或者说属性字段

(1 String类型的属性读写class AndroidJniDemo2 { private String sTmp; private native void readwriteField(); p...
  • GEOLO
  • GEOLO
  • 2011-01-28 21:34
  • 1321

android NDK/JNI-实例开发流程

NDK/JNI02-实例开发流程 <a class="fc03 m2a" title="Android_NDK" href="http://yueyue3d.blog.163.com/blog

android ndk jni 实例1

1、检查所需文件是否齐全 使用第三方动态库,应该至少有 2 个文件,一个是动态库(.so),另一个是包含 动态库 API 声明的头文件(.h)&lt;wbr&gt;&lt;/wbr
  • wsql
  • wsql
  • 2012-12-11 16:23
  • 332
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)