Falhas e exceções

Este documento contém uma visão geral de nível superior da avaliação de falhas e exceções por meio do SDK v4 do Google Analytics para Android.

Visão geral

A avaliação de falhas e exceções permite que você avalie o número e o tipo de falhas e exceções capturadas e não capturadas que ocorrem no seu aplicativo. Uma exceção contém estes campos:

Nome do campo Tipo Obrigatório Descrição
Descrição String Não Uma descrição da exceção (até cem caracteres). Aceita null.
isFatal boolean Sim 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, como o tempo limite ocasional de uma conexão de rede durante uma solicitação de dados, são erros no seu aplicativo para os quais você definiu o código de tratamento de exceções.

Avalie uma exceção identificada definindo os valores dos campos de exceção no rastreador e enviando o hit, como neste exemplo:

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

Consulte Configuração avançada para detalhes sobre o método getTracker.

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

Exceções não identificadas representam instâncias em que seu aplicativo encontrou condições inesperadas na execução. Geralmente, elas são fatais e causam falha no aplicativo. As exceções não identificadas podem ser enviadas automaticamente ao Google Analytics com a definição do valor de configuração ga_reportUncaughtExceptions ou com o uso da classe ExceptionReporter.

Configuração automática

Para enviar automaticamente todas as exceções não identificadas no seu aplicativo, adicione esta linha ao arquivo de configuração XML:

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

Depois de enviar uma exceção usando a avaliação automática de exceções, ela será transmitida ao manipulador de exceções padrão do Thread.

Uso de uma implementação avançada

Use a classe ExceptionReporter para implementar a avaliação automática de exceções não identificadas se você estiver usando uma implementação avançada e não o valor de configuração ga_reportUncaughtExceptions.

ExceptionReporter pode servir como o manipulador padrão de exceções não identificadas para uma sequência específica ou todas as sequências no seu aplicativo. Depois de enviar uma exceção ao Google Analytics, a classe ExceptionReporter pode, opcionalmente, transmitir a exceção a um manipulador 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 manipulador padrão de exceções não identificadas. 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.

Thread.UncaughtExceptionHandler myHandler = new ExceptionReporter(
    myTracker,
    Thread.getDefaultUncaughtExceptionHandler(),
    context);

// Make myHandler the new default uncaught exception handler.
Thread.setDefaultUncaughtExceptionHandler(myHandler);

Ao usar a avaliação automática de exceções, tenha em mente que:

  • Todas as exceções enviadas por meio da avaliação automática de exceções são informadas como fatais no Google Analytics.
  • Por padrão, o campo de descrição é definido automaticamente usando o tipo de exceção, o nome da classe, o nome do método e o nome da sequência.

Análise de descrições de exceções

O SDK fornece um StandardExceptionParser para simplificar o processo de recebimento e envio de descrições de exceções ao 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.
}

Você também pode implementar seu próprio analisador utilizando a interface do ExceptionParser e chamando o método setDescription dela ao enviar uma exceção ao Google Analytics.