Ten dokument zawiera ogólny opis metod pomiaru awarii i wyjątków za pomocą pakietu SDK Google Analytics na Androida w wersji 3.
Przegląd
Pomiary awarii i wyjątków pozwalają mierzyć liczbę i rodzaje wykrytych i niewykrytych awarii oraz wyjątków, które występują w aplikacji. Wyjątkiem są te pola:
Nazwa pola | Pole skryptu śledzenia | Typ | Wymagane | Opis |
---|---|---|---|---|
Opis |
|
|
Nie | Opis wyjątku (maksymalnie 100 znaków). Akceptuje
null
. |
isFatal |
|
boolean
|
Tak | Wskazuje, czy wyjątek był krytyczny.
true oznacza błąd krytyczny. |
Dane o awariach i wyjątkach są dostępne przede wszystkim w raporcie o awariach i wyjątkach.
Złapane wyjątki
Wykryte wyjątki to błędy w aplikacji, w przypadku których zdefiniujesz kod obsługi wyjątków. Może to być na przykład rzadki limit czasu połączenia z siecią podczas żądania danych.
Aby określić zarejestrowany wyjątek, ustaw wartości pól wyjątków w narzędziu do śledzenia i wyślij działanie, jak w tym przykładzie:
/* * 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. }
Pomiar niewykrytych wyjątków
Nieobsłużone wyjątki to przypadki, w których aplikacja napotkała nieoczekiwane warunki w czasie działania i często są krytyczne, powodując jej awarię.
Niewykryte wyjątki mogą być wysyłane automatycznie do Google Analytics za pomocą klasy EasyTracker lub klasy ExceptionReporter
.
Korzystanie z EasyTracker
Aby automatycznie wysyłać wszystkie niewyłapane wyjątki w aplikacji za pomocą EasyTracker,
dodaj ten wiersz do pliku analytics.xml
:
<bool name="ga_reportUncaughtExceptions">true</bool>
Po wysłaniu wyjątku za pomocą automatycznego pomiaru wyjątków EasyTracker przekaże ten wyjątek do domyślnego modułu obsługi wyjątków Thread
.
Korzystanie z implementacji zaawansowanej
Jeśli korzystasz z implementacji zaawansowanej i nie używasz EasyTracker, użyj klasy ExceptionReporter
, aby wdrożyć automatyczny pomiar niewykrytych wyjątków.
ExceptionReporter
może służyć jako domyślny moduł obsługi niewykrytych wyjątków dla określonego wątku lub wszystkich wątków w aplikacji. Po wysłaniu wyjątku do Google Analytics klasa ExceptionReporter
może go opcjonalnie przekazać do podanego przez Ciebie modułu obsługi niewykrytych wyjątków.
Poniższy kod tworzy nowy obiekt ExceptionReporter
i ustawia go jako nowy domyślny moduł obsługi niewykrytych wyjątków. W efekcie każdy niewykryty wyjątek będzie wysyłany do Google Analytics, a następnie przekazywany do poprzedniego modułu obsługi niewykrytych wyjątków. W przypadku większości aplikacji domyślny moduł obsługi zarejestruje wyjątek w dzienniku i zamknie aplikację.
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);
Jeśli korzystasz z automatycznego pomiaru wyjątków, pamiętaj o tych kwestiach:
- Wszystkie wyjątki wysłane za pomocą automatycznego pomiaru wyjątków są zgłaszane w Google Analytics jako krytyczne.
- Domyślnie pole opisu jest ustawiane automatycznie z użyciem typu wyjątku, nazwy klasy, nazwy metody i nazwy wątku.
Analizowanie opisów wyjątków
Pakiet SDK udostępnia funkcję StandardExceptionParser
, która upraszcza proces pobierania i wysyłania opisów wyjątków do 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. }
Możesz też wdrożyć własny parser, implementując interfejs ExceptionParser
i wywołując jego metodę setDescription
podczas wysyłania wyjątku do Google Analytics.