В этом документе представлен общий обзор измерения сбоев и исключений с помощью Google Analytics SDK для Android v2.
Обзор
Измерение сбоев и исключений позволяет измерить количество и тип обнаруженных и необнаруженных сбоев и исключений, возникающих в вашем приложении. Исключением в Google Analytics являются:
-
String
(Необязательно) Описание – описание исключения (до 100 символов). Принимаетnull
. -
boolean
значение isFatal – указывает, было ли исключение фатальным.true
указывает на фатальный исход.
Данные о сбоях и исключениях доступны в основном в отчете о сбоях и исключениях.
Обнаруженные исключения
Перехваченные исключения — это ошибки в вашем приложении, для которых вы определили код обработки исключений. Как правило, это ошибки, которые, как вы ожидаете, могут возникнуть при обычном использовании вашего приложения и которые вы хотели бы, чтобы ваше приложение могло восстановиться, например, периодический тайм-аут сетевого подключения во время запроса данных.
Вы можете измерить перехваченные исключения, добавив sendException()
в блок catch
вашего кода обработки исключений.
В следующем примере приложение пытается загрузить список лучших результатов из облака. Если время запроса истечет (возможно, из-за медленного сетевого подключения), мы отправим исключение в Google Analytics, прежде чем обработать его для пользователя:
try { ArrayListhighScores = 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.