Я пытаюсь создать простой обработчик исключений, который поможет мне отладить приложение. Прямо сейчас, когда у меня есть исключение, я вынужден подключиться к отладчику Eclipse просто, чтобы увидеть подробности об исключении.
Чтобы избежать этого, я использовал setUncaughtExceptionHandler для обработки любого необработанного исключения и отображения Toast для исключения. К сожалению, это не работает.
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();
}
});
}
}
По сути, я сделал форму с помощью одной кнопки, нажав на которую, она выкинула бы исключение из-за нуля. Однако нажатие кнопки не приводит к отображению глобального обработчика тоста. Вместо этого кнопка остается оранжевой (нажата), и ничего не происходит.
Излишне говорить, что если я прокомментирую я = 5/0;, я вижу тост, который говорит, что нажата кнопка.
Два вопроса: 1) Почему не отображается тост в теге UncaughtExceptionHandler? Как заставить его показать? 2) Существует ли альтернативный/лучший способ для обработки глобальных исключений? Я предполагаю, что смогу установить aLogCat на симулятор Android и просто зарегистрировать неперехваченное исключение, но, тем не менее, он менее удобен - мне нужно будет переключать приложения, чтобы увидеть детали исключений.
Спасибо!