Как отловить необработанные исключения (Force close) в Android

марта
01
2012
Метки: android crash

Содержание

При разработке приложений на платформе 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 >

Напишите первое сообщение!

Вы должны войти под своим аккаунтом чтобы оставлять комментарии