Сбои и исключения — Android SDK v2 (устаревшая версия)

В этом документе представлен общий обзор измерения сбоев и исключений с помощью Google Analytics SDK для Android v2.

Обзор

Измерение сбоев и исключений позволяет измерить количество и тип обнаруженных и необнаруженных сбоев и исключений, возникающих в вашем приложении. Исключением в Google Analytics являются:

  • String (Необязательно) Описание – описание исключения (до 100 символов). Принимает null .
  • boolean значение isFatal – указывает, было ли исключение фатальным. true указывает на фатальный исход.

Данные о сбоях и исключениях доступны в основном в отчете о сбоях и исключениях.

Обнаруженные исключения

Перехваченные исключения — это ошибки в вашем приложении, для которых вы определили код обработки исключений. Как правило, это ошибки, которые, как вы ожидаете, могут возникнуть при обычном использовании вашего приложения и которые вы хотели бы, чтобы ваше приложение могло восстановиться, например, периодический тайм-аут сетевого подключения во время запроса данных.

Вы можете измерить перехваченные исключения, добавив sendException() в блок catch вашего кода обработки исключений.

В следующем примере приложение пытается загрузить список лучших результатов из облака. Если время запроса истечет (возможно, из-за медленного сетевого подключения), мы отправим исключение в Google Analytics, прежде чем обработать его для пользователя:

try {
  ArrayList highScores = getHighScores();            // Get scores from the cloud.
} catch (IOException e) {
  Tracker myTracker = EasyTracker.getTracker();      // Get a reference to tracker.
  myTracker.sendException(e.getMessage(), false);    // false indicates non-fatal exception.

  ... // Display alert to user that high scores are currently unavailable.
}

Измерение неперехваченных исключений

Неперехваченные исключения представляют собой случаи, когда ваше приложение сталкивалось с неожиданными условиями во время выполнения и часто было фатальным, что приводило к сбою приложения. Неперехваченные исключения можно отправлять в Google Analytics автоматически с помощью EasyTracker или класса ExceptionReporter .

Использование EasyTracker

Чтобы автоматически отправлять все неперехваченные исключения в вашем приложении с помощью EasyTracker, добавьте следующую строку в файл analytics.xml :

<bool name="ga_reportUncaughtExceptions">true</bool>

После отправки исключения с использованием автоматического измерения исключений EasyTracker передаст исключение обработчику исключений Thread по умолчанию.

При использовании автоматического измерения исключений имейте в виду следующее:

  • Все исключения, отправленные с использованием автоматического измерения исключений, в Google Analytics считаются фатальными.
  • Поле описания заполняется автоматически с использованием трассировки стека.

Использование ExceptionReporter

Используйте класс ExceptionReporter для реализации автоматического измерения неперехваченных исключений, если вы не используете EasyTracker. Это тот же класс, который реализует EasyTracker для обработки автоматических отчетов об исключениях.

ExceptionReporter может служить обработчиком неперехваченных исключений по умолчанию для определенного потока или для всех потоков в вашем приложении. После отправки исключения в Google Analytics класс ExceptionReporter может дополнительно передать исключение предоставленному вами обработчику неперехваченных исключений.

Следующий код создает новый объект ExceptionReporter и устанавливает его в качестве нового обработчика неперехваченных исключений по умолчанию. В результате каждое неперехваченное исключение будет отправлено в Google Analytics, а затем передано предыдущему обработчику неперехваченных исключений. Для большинства приложений обработчик по умолчанию записывает исключение в журнал и завершает приложение.

UncaughtExceptionHandler myHandler = new ExceptionReporter(
    myTracker,                                        // Currently used Tracker.
    GAServiceManager.getInstance(),                   // GAServiceManager singleton.
    Thread.getDefaultUncaughtExceptionHandler());     // Current default uncaught exception handler.

 // Make myHandler the new default uncaught exception handler.
Thread.setDefaultUncaughtExceptionHandler(myHandler);

Использование ExceptionParser

SDK предоставляет интерфейс ExceptionParser , который вы можете реализовать, чтобы получать наиболее релевантные описания из трассировок стека при отправке неперехваченных исключений в Google Analytics. Интерфейс ExceptionParser имеет один метод: getDescription(String threadName, Throwable t) .

Вы можете настроить свой Tracker на использование ExceptionParser при отправке неперехваченных исключений в Google Analytics, вызвав setExceptionParser(ExceptionParser parser) как в этом примере:

// Where myParser represents your implementation of ExceptionParser.
ExceptionParser parser = new myParser(context);

// Where myTracker is an instance of Tracker.
myTracker.setExceptionParser(parser);

Затем ваш Трекер будет использовать метод getDescription() вашего парсера для заполнения поля описания любых неперехваченных исключений, отправленных в Google Analytics.