Falhas e exceções - SDK do Android v2 (legado)

Este documento apresenta uma visão geral de alto nível da avaliação de falhas e exceções usando o SDK do Google Analytics para Android v2.

Visão geral

A avaliação de falhas e exceções permite que você analise o número e o tipo de falhas e exceções detectadas e não detectadas que ocorrem no seu app. Uma exceção no Google Analytics consiste em:

  • String (Opcional) Descrição: uma descrição da exceção (até 100 caracteres). Aceita null .
  • boolean isFatal: indica se a exceção foi fatal. true indica que foi fatal.

Os dados de falhas e exceções estão disponíveis principalmente no Relatório de falhas e exceções.

Exceções identificadas

Exceções identificadas são erros no seu app para os quais você definiu um código de processamento de exceções. Esses são geralmente erros que você espera que ocorram durante o uso normal do app e que precisam ser recuperados, como o tempo limite ocasional de uma conexão de rede durante uma solicitação de dados.

Para avaliar as exceções capturadas, adicione sendException() ao bloco catch do código de tratamento de exceções.

No exemplo a seguir, um app tenta carregar uma lista de pontuações mais altas da nuvem. Se a solicitação expirar, talvez devido a uma conexão de rede lenta, enviaremos a exceção ao Google Analytics antes de processá-la para o usuário:

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

Avaliação de exceções não identificadas

Exceções não identificadas representam instâncias em que o app encontrou condições inesperadas no momento da execução. Elas geralmente são fatais, fazendo com que o app falhe como resultado. Exceções não identificadas podem ser enviadas automaticamente ao Google Analytics usando o EasyTracker ou a classe ExceptionReporter.

Como usar o EasyTracker

Para enviar automaticamente todas as exceções não identificadas no seu app usando o EasyTracker, adicione esta linha ao arquivo analytics.xml:

<bool name="ga_reportUncaughtExceptions">true</bool>

Depois de enviar uma exceção usando a avaliação automática de exceções, o EasyTracker vai transmitir a exceção ao gerenciador de exceções padrão do Thread.

Ao usar a avaliação automática de exceções, lembre-se do seguinte:

  • Todas as exceções enviadas por meio da avaliação automática de exceções são informadas como fatais no Google Analytics.
  • O campo de descrição é preenchido automaticamente usando o stack trace.

Como usar o ExceptionReporter

Use a classe ExceptionReporter para implementar a avaliação automática de exceções não identificadas se você não estiver usando o EasyTracker. Essa é a mesma classe que o EasyTracker implementa para processar os relatórios automáticos de exceções.

ExceptionReporter pode servir como o gerenciador padrão de exceções não identificadas para uma linha de execução específica ou todas as linhas de execução no seu app. Depois de enviar uma exceção ao Google Analytics, a classe ExceptionReporter pode transmitir a exceção a um gerenciador de exceções não identificadas que você fornecer.

O código a seguir cria um novo objeto ExceptionReporter e o define como o novo gerenciador padrão de exceções não capturadas. Como resultado, todas as exceções não identificadas serão enviadas ao Google Analytics e, em seguida, transmitidas ao manipulador de exceções não capturadas anterior. Para a maioria dos aplicativos, o manipulador padrão registrará a exceção no registro e encerrará o aplicativo.

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);

Como usar o ExceptionParser

O SDK fornece uma interface ExceptionParser que pode ser implementada para acessar as descrições mais relevantes dos stack traces ao enviar exceções não capturadas ao Google Analytics. A interface ExceptionParser tem um método: getDescription(String threadName, Throwable t).

Você pode configurar Tracker para usar ExceptionParser ao enviar exceções não capturadas ao Google Analytics chamando setExceptionParser(ExceptionParser parser), como neste exemplo:

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

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

O rastreador vai usar o método getDescription() do analisador para preencher o campo de descrição das exceções não identificadas que foram enviadas ao Google Analytics.