我有一个
Android项目,其中包含一个使用JNI从C函数中提取值的类.使用NDK将C函数内置到库中.从C函数返回的值又用于在类首次加载时初始化类中的变量.这很好用.但是,我还希望它在缺少库时通过提供默认值来工作.所以我使用这样的东西:
static native String getstring(); static { try { System.loadLibrary("library"); NAME = getstring(); } catch (Exception e) { NAME = "Default"; } }
尽管有这个问题,但当我尝试运行此代码并且缺少库时,我仍然得到一个UnsatisfiedLinkError.为什么我没有抓住异常?我究竟做错了什么?
解决方法
UnsatisfiedLinkError不是Exception的子类. UnsatisfiedLinkError的层次结构是:
Throwable->Error->UnsatisfiedLinkError
如果要处理它,最好捕获UnsatisfiedLinkError.