Зміст
При розробці програм на платформі 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 | > |