Błędy i wyjątki – pakiet SDK do Androida w wersji 2 (starsza wersja)

Ten dokument zawiera ogólny opis metod pomiaru awarii i wyjątków za pomocą pakietu SDK Google Analytics na Androida w wersji 2.

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ątek w tej usłudze obejmuje:

  • String(opcjonalnie) Opis – opis wyjątku (maksymalnie 100 znaków). Akceptuje null .
  • boolean isFatal – 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, dla których masz zdefiniowany kod obsługi wyjątków. Są to zwykle błędy, które mogą wystąpić podczas normalnego używania aplikacji, a które powinny być możliwe do odzyskania. Mogą to być na przykład sporadyczne przekroczenie limitu czasu połączenia sieciowego podczas żądania danych.

Aby mierzyć wykryte wyjątki, dodaj sendException() do bloku catch w kodzie obsługi wyjątków.

W poniższym przykładzie aplikacja próbuje wczytać listę najlepszych wyników z chmury. Jeśli limit czasu żądania zostanie przekroczony (np. z powodu wolnego połączenia sieciowego), wyślemy wyjątek do Google Analytics przed przetworzeniem żądania w imieniu użytkownika:

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.
}

Pomiar niewykrytych wyjątków

Niewykryte wyjątki to przypadki, w których aplikacja napotkała nieoczekiwane warunki w czasie działania i często są one krytyczne, co prowadzi do awarii aplikacji. 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.

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.
  • Pole opisu jest wypełniane automatycznie za pomocą zrzutu stosu.

Korzystanie z raportu Wyjątek

Jeśli nie korzystasz z EasyTracker, użyj klasy ExceptionReporter, aby wdrożyć automatyczny pomiar niewykrytych wyjątków. To ta sama klasa, którą wdraża EasyTracker do obsługi automatycznego raportowania 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(
    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);

Korzystanie z ExceptionParser

Pakiet SDK udostępnia interfejs ExceptionParser, który możesz zaimplementować, aby uzyskać najtrafniejsze opisy ze zrzutów stosu podczas wysyłania niewykrytych wyjątków do Google Analytics. Interfejs ExceptionParser udostępnia jedną metodę: getDescription(String threadName, Throwable t).

Możesz skonfigurować Tracker tak, aby używał ExceptionParser podczas wysyłania niewykrytych wyjątków do Google Analytics, wywołując setExceptionParser(ExceptionParser parser) jak w tym przykładzie:

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

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

Tracker wypełnia następnie pole opisu wszelkie niewyłapane wyjątki wysłane do Google Analytics za pomocą metody getDescription() parsera.