2010-05-12 10 views
7

Estoy pensando en configurar un controlador de excepción global predeterminado para mi aplicación móvil (Android) (que utiliza la sintaxis de Java) mediante la llamada Thread.setDefaultUncaughtExceptionHandler(...). Estoy pensando en solo mostrar un cuadro de diálogo de alertas con el mensaje apropiado para el usuario.Controladores de excepciones globales en Java

¿Hay algún inconveniente, advertencias y reglas que se deben seguir cuando se establece DefaultExceptionHandlers? ¿Alguna de las mejores prácticas, como asegurarse de que el proceso se elimine, el seguimiento de pila completo se escribe en registros, etc.?

Enlaces a documentación, tutoriales, etc. que pueden arrojar algo de luz sobre esto son bienvenidos.

Gracias.

Respuesta

2
  • El nombre es un poco engañoso, porque el uso de ese método se establecerá un manejador de excepciones por defecto para todos los hilos.
  • Asegúrese de que no se pueden generar excepciones desde su manejador de excepciones.
  • Si está haciendo cosas de GUI desde su manejador de excepciones, asegúrese de hacerlo desde el hilo correcto.
  • Una excepción no detectada solo detendrá el hilo donde tuvo lugar la excepción, si eso también hace que el proceso finalice dependiendo de cualquier otro subproceso que pueda estar ejecutándose.
+0

"Si está haciendo cosas de GUI desde su manejador de excepciones, asegúrese de hacerlo desde el hilo correcto". ¿Qué significa esto? – Gratzi

+0

Significa que las cosas de GUI se deben hacer en el hilo EDT (usando 'invokeLater' si es necesario) De lo contrario, pueden ocurrir cosas extrañas. –

1

Un posible problema con la creación de un controlador de excepción global es que puede quedar atrapado en un bucle de excepciones: algunas excepciones se lanzarán repetidamente a menos que se finalice un programa.

Si quiere decir que cuando se lanza una excepción, aparece un mensaje y luego la aplicación finaliza, entonces estará bien.

+0

Si en mi método uncaughtException, acabo de mostrar un AlertDialog, el Runtime matará/terminará el proceso automáticamente o tendré que ser explícito con esto? – Samuh

+0

Si visualiza un AlertDialog en el flujo normal de código, ¿se cancela automáticamente? – Finbarr

Cuestiones relacionadas