studio - Usar Global Exception Handling en android
java lang runtime exception android (3)
¿Hay un ejemplo de código o un tutorial sobre cómo usar el método Thread.setDefaultUncaughtExceptionHandler? Básicamente, estoy tratando de mostrar un diálogo de alerta personalizado, cada vez que se lanza una excepción, en mi aplicación. ¿Es posible hacer esto? Sé que es un poco complicado mostrar algo en la pantalla, si se lanza la excepción en el hilo de la interfaz de usuario, pero no sé cómo evitarlo.
Aquí hay una variante de la respuesta de Mohit Sharma con las siguientes mejoras:
- No hace que la aplicación / servicio se congele después de la gestión de errores
- Permite a Android hacer su manejo normal de errores después de su propio
Código:
public class BaseActivity extends Activity {
@Override
public void onCreate() {
super.onCreate();
final Thread.UncaughtExceptionHandler oldHandler =
Thread.getDefaultUncaughtExceptionHandler();
Thread.setDefaultUncaughtExceptionHandler(
new Thread.UncaughtExceptionHandler() {
@Override
public void uncaughtException(
Thread paramThread,
Throwable paramThrowable
) {
//Do your own error handling here
if (oldHandler != null)
oldHandler.uncaughtException(
paramThread,
paramThrowable
); //Delegates to Android''s error handling
else
System.exit(2); //Prevents the service/app from freezing
}
});
}
}
Ejemplo básico para alguien que viene a esta página con una solución :)
public class ChildActivity extends BaseActivity {
@SuppressWarnings("unused")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
int a=1/0;
}
}
Clase para el manejo del error:
public class BaseActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
@Override
public void uncaughtException(Thread paramThread, Throwable paramThrowable) {
Log.e("Alert","Lets See if it Works !!!");
}
});
}
}
Tenga en cuenta que The RuntimePermission("setDefaultUncaughtExceptionHandler")
se verifica antes de configurar el controlador y se asegura de que el proceso se detenga después, lanzando una excepción no detectada, ya que las cosas podrían estar en un estado incierto.
No muestre nada, de hecho, el hilo de la interfaz de usuario podría haber sido el que se colgó, escriba un registro y / o envíe los datos a un servidor, en su lugar. Es posible que desee verificar esta pregunta y sus respuestas .