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.

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 .

  • Cómo capturar excepciones generadas con código nativo que se ejecuta en Android
  • JSONException: no hay valor para XYZ al intentar getString ("XYZ")
  • Excepciones de Android que manejan la mejor práctica?
  • Detectar la excepción de AsyncTask. Necesito pensar
  • Manejador de errores por defecto de RxJava
  • En Java, si un puntero nulo sucede muy raramente es mejor usar catch en lugar de if
  • ¿Ha perdido la traza de la pila de excepciones en Google Analytics v2 para Android?
  • MonoDroid: recuperación de excepción no controlada
  • Android: evitar el bloqueo de la aplicación debido a errores no controlados
  • Cómo corregir NPE en ViewRoot # updateBidiOptions?
  • Mkdirs aways devuelve false en Android 5.1
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.