В этом документе представлен общий обзор измерения сбоев и исключений с помощью Google Analytics SDK v4 для Android.
Обзор
Измерение сбоев и исключений позволяет измерить количество и тип обнаруженных и необнаруженных сбоев и исключений, возникающих в вашем приложении. Исключение имеет следующие поля:
Имя поля | Тип | Необходимый | Описание |
---|---|---|---|
Описание | String | Нет | Описание исключения (до 100 символов). Принимает null . |
isFatal | boolean | Да | Указывает, было ли исключение фатальным. true указывает на фатальный исход. |
Данные о сбоях и исключениях доступны в основном в отчете о сбоях и исключениях.
Обнаруженные исключения
Обнаруженные исключения, такие как периодическое время ожидания сетевого подключения во время запроса данных, представляют собой ошибки в вашем приложении, для обработки которых вы реализовали код.
Измерьте перехваченное исключение, установив значения полей исключения на трекере и отправив обращение, как в этом примере:
// Get tracker. Tracker t = ((AnalyticsSampleApp) getActivity().getApplication()).getTracker(TrackerName.APP_TRACKER); // Build and send exception. t.send(new HitBuilders.ExceptionBuilder() .setDescription(getExceptionMethod() + ":" + getExceptionLocation()) .setFatal(getExceptionFatal()) .build());
Подробную информацию о методе getTracker
см. в разделе «Расширенная настройка» .
Измерение неперехваченных исключений
Неперехваченные исключения представляют собой случаи, когда ваше приложение сталкивалось с неожиданными условиями во время выполнения, которые часто были фатальными и приводили к сбою приложения. Неперехваченные исключения можно отправлять в Google Analytics автоматически, задав значение конфигурации ga_reportUncaughtExceptions
или используя класс ExceptionReporter
.
Автоматическая конфигурация
Чтобы автоматически отправлять все неперехваченные исключения в вашем приложении в Google Analytics, добавьте следующую строку в свой файл конфигурации XML:
<bool name="ga_reportUncaughtExceptions">true</bool>
После отправки исключения с использованием автоматического измерения исключений оно будет передано обработчику исключений Thread
по умолчанию.
Использование расширенной реализации
Используйте класс ExceptionReporter
для реализации автоматического измерения неперехваченных исключений, если вы используете расширенную реализацию и не используете значение конфигурации ga_reportUncaughtExceptions
.
ExceptionReporter
может служить обработчиком неперехваченных исключений по умолчанию для определенного потока или для всех потоков в вашем приложении. После отправки исключения в Google Analytics класс ExceptionReporter
может дополнительно передать исключение предоставленному вами обработчику неперехваченных исключений.
Следующий код создает новый объект ExceptionReporter
и устанавливает его в качестве нового обработчика неперехваченных исключений по умолчанию. В результате каждое неперехваченное исключение будет отправлено в Google Analytics, а затем передано предыдущему обработчику неперехваченных исключений. Для большинства приложений обработчик по умолчанию записывает исключение в журнал и завершает приложение.
Thread.UncaughtExceptionHandler myHandler = new ExceptionReporter( myTracker, Thread.getDefaultUncaughtExceptionHandler(), context); // Make myHandler the new default uncaught exception handler. Thread.setDefaultUncaughtExceptionHandler(myHandler);
При использовании автоматического измерения исключений имейте в виду следующее:
- Все исключения, отправленные с использованием автоматического измерения исключений, в Google Analytics считаются фатальными.
- По умолчанию поле описания автоматически задается с использованием типа исключения, имени класса, имени метода и имени потока.
Анализ описаний исключений
SDK предоставляет StandardExceptionParser
для упрощения процесса получения и отправки описаний исключений в Google Analytics:
// Get tracker. Tracker t = ((AnalyticsSampleApp) getActivity().getApplication()).getTracker( TrackerName.APP_TRACKER); // Using StandardExceptionParser to get an Exception description. try { // Request some scores from the network. ArrayList<Integer> highScores = getHighScoresFromCloud(); } catch (IOException e) { t.send(new HitBuilders.ExceptionBuilder() .setDescription(new StandardExceptionParser(this, null) .getDescription(Thread.currentThread().getName(), e)) .setFatal(false) .build() ); ... // Display alert to user that high scores are currently unavailable. }
Вы также можете реализовать свой собственный парсер, реализовав интерфейс ExceptionParser
и вызвав его метод setDescription
при отправке исключения в Google Analytics.