Uso de la gestión de excepciones globales en android
¿Hay un ejemplo de código, o un tutorial sobre cómo usar el método Thread.setDefaultUncaughtExceptionHandler? Básicamente estoy intentando exhibir un diálogo de la alerta de encargo, siempre que se lance una excepción, en mi uso. ¿Es posible hacer esto? Sé que es un poco difícil de mostrar algo en la pantalla, si la excepción se arroja en el hilo de la interfaz de usuario, pero no sé nada de trabajo para esto.
- ¿Cómo puedo detener mi aplicación de zombifying después de manejar una Excepción sin atrapar?
- manejar excepciones no controladas en Android
- Excepción de tiempo de ejecución de clase intermitente de Android no encontrada
- Manejo de excepciones de Android
- Evitar intentar / capturar en Android
- La excepción es NULL siempre
- Utilización de Try Catch Manejo de excepciones o comprobaciones explícitas
- Tratar las excepciones (de proceso cruzado) en el proveedor de contenido personalizado de Android
- Cómo manejar graciosamente la excepción dentro de AsyncTask en Android?
- Androide. La mejor manera de informar al desarrollador de las excepciones lanzadas
- SQLiteConstraintException no detectado
- Necesidad de manejar excepción no captada y enviar archivo de registro
- Manejar excepciones de CursorLoader
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 de 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 !!!"); } }); } }
He aquí una variante de la respuesta de Mohit Sharma con las siguientes mejoras:
- No provoca que la aplicación o el servicio se bloqueen después del tratamiento de errores.
- Deja que Android haga su manejo de errores normal después de tu 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 } }); } }
Tenga en cuenta que el The RuntimePermission("setDefaultUncaughtExceptionHandler")
se comprueba antes de establecer el controlador y asegúrese de hacer 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 mostrar nada, de hecho el hilo de interfaz de usuario podría haber sido el que se estrelló, escribir un registro y / o enviar los detalles a un servidor, en su lugar. Es posible que desee comprobar esta pregunta y sus respuestas .