Содержание
При разработке приложений на платформе Android иногда случаются исключения, приводящие к аварийному закрытию приложения. На платформе есть способ обработать эти ошибки самостоятельно. Это можно сделать используя класс Thread.UncaughtExceptionHandler.
Для этого нам понадобится экземпляр вышеупомянутого класса Thread.UncaughtExceptionHandler:
Thread.UncaughtExceptionHandler uncaughtExceptionHandler = new Thread.UncaughtExceptionHandler() {
@Override
public void uncaughtException(Thread t, Throwable e) {
e.printStackTrace();
// что-то делаем с исключением
CatchCrashReportActivity.this.finish();
}
};
А в методе onCreate() Вашего Activity необходимо зарегистрировать этот обработчик:
Thread.setDefaultUncaughtExceptionHandler(uncaughtExceptionHandler);
Следующий пример демонстрирует отлов необработанного исключения (деления на ноль):
package com.seostella.catchcrashreport;
import android.app.Activity;
import android.os.Bundle;
public class CatchCrashReportActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Thread.setDefaultUncaughtExceptionHandler(uncaughtExceptionHandler);
int a = 1;
a--;
int b = 10 / a;
}
Thread.UncaughtExceptionHandler uncaughtExceptionHandler = new Thread.UncaughtExceptionHandler() {
@Override
public void uncaughtException(Thread t, Throwable e) {
e.printStackTrace();
// do something
CatchCrashReportActivity.this.finish();
}
};
}
Если Ваше приложение находится в Android Market, то Google будет автоматически высылать отчеты о падении приложения на электронный адрес, указанный при регистрации.
Обратите внимание на проект ACRA. Это библиотека для Android приложений, которая позволяет автоматически публиковать отчеты о падении в GoogleDoc.
Необработанные исключения (UncaughtExceptionHandler) в Android. Часть 2 | > |