En mi onCreate() configurar un controlador uncaughtException de la siguiente manera:Cómo volver a lanzar una excepción
Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
@Override
public void uncaughtException(Thread thread, Throwable throwable) {
Log.e(getMethodName(2), "uncaughtException", throwable);
android.os.Process.killProcess(android.os.Process.myPid());
}
});
Funciona bien, pero me gustaría volver el comportamiento predeterminado del sistema de visualización de la fuerza- cerrar el diálogo al usuario.
Si trato de reemplazar la llamada KillProcess()
con un throw throwable
, el compilador se queja de que necesito rodearlo con un try/catch.
Si me rodeo con un try/catch:
Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
@Override
public void uncaughtException(Thread thread, Throwable throwable) {
try {
Log.e(getMethodName(2), "uncaughtException", throwable);
throw throwable;
}
catch (Exception e) {
}
finally {
}
}
});
El compilador se queja de que todavía queda mucho por throw throwable
rodeados con un try/catch.
¿Cómo vuelvo a tirar ese arrojar? Tal que a excepción de ese informativo Log.e()
el sistema se comporta exactamente como antes: Como nunca he configurado un controlador predeterminado UncaughtException.
Lo sentimos, pero eso da como resultado un flujo interminable de Excepciones no detectadas y ningún diálogo de cierre forzado. No es lo que estoy buscando. –
He actualizado la respuesta. – Jeshurun
¡Funciona muy bien! Aceptando +1. –