В этом документе представлен общий обзор измерения сбоев и исключений с помощью Google Analytics SDK для Android v3.
Обзор
Измерение сбоев и исключений позволяет измерить количество и тип обнаруженных и необнаруженных сбоев и исключений, возникающих в вашем приложении. Исключение имеет следующие поля:
Имя поля | Поле трекера | Тип | Необходимый | Описание |
---|---|---|---|---|
Описание |
|
| Нет | Описание исключения (до 100 символов). Принимает null . |
isFatal |
| boolean | Да | Указывает, было ли исключение фатальным. true указывает на фатальный исход. |
Данные о сбоях и исключениях доступны в основном в отчете о сбоях и исключениях.
Обнаруженные исключения
Перехваченные исключения — это ошибки в вашем приложении, для которых вы определили код обработки исключений, например периодический тайм-аут сетевого подключения во время запроса данных.
Измерьте перехваченное исключение, установив значения полей исключения на трекере и отправив обращение, как в этом примере:
/* * An app tries to load a list of high scores from the cloud. If the request * times out, an exception is sent to Google Analytics */ try { // Request some scores from the network. ArrayListhighScores = getHighScoresFromCloud(); } catch (IOException e) { // May return null if EasyTracker has not yet been initialized with a // property ID. EasyTracker easyTracker = EasyTracker.getInstance(this); // StandardExceptionParser is provided to help get meaningful Exception descriptions. easyTracker.send(MapBuilder .createException(new StandardExceptionParser(this, null) // Context and optional collection of package names // to be used in reporting the exception. .getDescription(Thread.currentThread().getName(), // The name of the thread on which the exception occurred. e), // The exception. false) // False indicates a nonfatal exception .build() ); ... // 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
по умолчанию.
Использование расширенной реализации
Используйте класс ExceptionReporter
для реализации автоматического измерения неперехваченных исключений, если вы используете расширенную реализацию и не используете EasyTracker.
ExceptionReporter
может служить обработчиком неперехваченных исключений по умолчанию для определенного потока или для всех потоков в вашем приложении. После отправки исключения в Google Analytics класс ExceptionReporter
может дополнительно передать исключение предоставленному вами обработчику неперехваченных исключений.
Следующий код создает новый объект ExceptionReporter
и устанавливает его в качестве нового обработчика неперехваченных исключений по умолчанию. В результате каждое неперехваченное исключение будет отправлено в Google Analytics, а затем передано предыдущему обработчику неперехваченных исключений. Для большинства приложений обработчик по умолчанию записывает исключение в журнал и завершает приложение.
UncaughtExceptionHandler myHandler = new ExceptionReporter( GoogleAnalytics.getInstance(this).getDefaultTracker(), // Tracker, may return null if not yet initialized. GAServiceManager.getInstance(), // GAServiceManager singleton. Thread.getDefaultUncaughtExceptionHandler()); // Current default uncaught exception handler. // Make myHandler the new default uncaught exception handler. Thread.setDefaultUncaughtExceptionHandler(myHandler);
При использовании автоматического измерения исключений имейте в виду следующее:
- Все исключения, отправленные с использованием автоматического измерения исключений, в Google Analytics считаются фатальными.
- По умолчанию поле описания автоматически задается с использованием типа исключения, имени класса, имени метода и имени потока.
Анализ описаний исключений
SDK предоставляет StandardExceptionParser
для упрощения процесса получения и отправки описаний исключений в Google Analytics:
// Using StandardExceptionParser to get an Exception description. try { // Request some scores from the network. ArrayListhighScores = getHighScoresFromCloud(); } catch (IOException e) { // May return null if EasyTracker has not yet been initialized with a // property ID. EasyTracker easyTracker = EasyTracker.getInstance(this); easyTracker.send(MapBuilder .createException(new StandardExceptionParser(this, null) // Context and optional collection of package names // to be used in reporting the exception. .getDescription(Thread.currentThread().getName(), // The name of the thread on which the exception occurred. e), // The exception. false) // False indicates a fatal exception .build() ); ... // Display alert to user that high scores are currently unavailable. }
Вы также можете реализовать свой собственный парсер, реализовав интерфейс ExceptionParser
и вызвав его метод setDescription
при отправке исключения в Google Analytics.