Estoy intentando crear un controlador de excepción simple que me ayudará a depurar la aplicación. En este momento, cuando tengo una excepción, me veo obligado a conectarme con el depurador de Eclipse simplemente para ver los detalles de la excepción.Uso de la gestión de excepciones globales con "setUncaughtExceptionHandler" y "Toast"
Para evitar que he usado setUncaughtExceptionHandler para manejar cualquier excepción no controlada y mostrar un Toast en la excepción. Lamentablemente, eso no funciona.
public class TicTacToe extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Thread.currentThread().setUncaughtExceptionHandler(new UncaughtExceptionHandler() {
@Override
public void uncaughtException(Thread thread, Throwable ex) {
Toast.makeText(TicTacToe.this, "TOAST", Toast.LENGTH_LONG).show();
}
});
setContentView(R.layout.main);
Button continueButton = (Button) findViewById(R.id.cell01);
continueButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
int i = 5;
i = 5/0;
Toast.makeText(TicTacToe.this, "BUTTON", Toast.LENGTH_LONG).show();
}
});
}
}
Esencialmente hice un formulario con un solo botón, al pulsar sobre el cual, sería lanzar una excepción devisiones por cero. Sin embargo, al presionar el botón no se muestra el controlador de brindis global. En cambio, el botón permanece naranja (presionado) y no pasa nada.
hace falta decir que si comento hacia fuera i = 5/0; Veo el brindis que dice que se presionó un botón.
Dos preguntas: 1) ¿Por qué no se muestra la tostada en el cuerpo UncaughtExceptionHandler? ¿Cómo causa que se muestre? 2) ¿Existe una forma alternativa/mejor para el manejo de excepciones globales? Creo que podría instalar aLogCat en el simulador de Android y simplemente registrar la excepción no detectada, pero parece menos cómoda: tendré que cambiar de aplicación solo para ver los detalles de la excepción.
Gracias!
Si coloca Log.e ("TicTacToe", "Excepción no controlada", ex) allí en lugar de Toast, y visualiza el logcat como eclipse o con DDMS, ¿registra el error? –
No necesita depurador, solo la vista de Logcat. Y necesitarás Eclipse para solucionar los problemas de todos modos. – yanchenko
Woah @ Alex. Estaba seguro de que tenía que estar conectado para ver aLogCat. ¡Muchas gracias! – VitalyB