Як відловити необроблені виключення в 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 >

Напишіть перше повідомлення!

Ви повинні увійти під своїм аккаунтом щоб залишати коментарі