2010-07-27 8 views
6

Tengo un proyecto de Android que contiene una clase que usa JNI para extraer un valor de una función C. La función C se construyó en una biblioteca usando NDK. El valor devuelto por la función C se usa a su vez para inicializar una variable dentro de una clase cuando se carga por primera vez. Esto funciona bien Sin embargo, también quiero que funcione cuando falta la biblioteca al proporcionar un valor predeterminado. Así que estoy usando algo como esto:Cómo atrapar UnsatisifiedLinkError al usar la biblioteca NDK-built en una aplicación de Android?

static native String getstring(); 

static { 
     try { 
       System.loadLibrary("library"); 
       NAME = getstring(); 
     } 
     catch (Exception e) { 
       NAME = "Default"; 
     } 
} 

A pesar de la captura, Im sigue recibiendo un UnsatisfiedLinkError cuando trato de ejecutar este código con la biblioteca que falta. ¿Por qué no estoy atrapando la excepción? ¿Qué estoy haciendo mal?

Respuesta

10

UnsatisfiedLinkError no es una subclase de Exception. La jerarquía de UnsatisfiedLinkError es:

Throwable->Error->UnsatisfiedLinkError 

Será mejor captura UnsatisfiedLinkError si quieres manejarlo.

+0

Ah, eso tiene sentido. Capturar ese error específico y establecer un valor predeterminado funciona perfectamente. ¡Gracias! – Eno

Cuestiones relacionadas