Este documento contém uma visão geral de nível superior da avaliação de falhas e exceções por meio do SDK do Google Analytics para Android v3.
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 capturadas e não detectadas que ocorrem no seu app. Uma exceção tem estes campos:
Nome do campo | Campo do rastreador | Tipo | Obrigatório | Descrição |
---|---|---|---|---|
Descrição |
|
|
Não | Descrição da exceção (até 100 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 são erros no seu aplicativo para os quais você definiu o código de tratamento de exceções, como o tempo limite ocasional de uma conexão de rede durante uma solicitação de dados.
Avalie uma exceção identificada definindo os valores dos campos de exceção no rastreador e enviando o hit, como neste exemplo:
/* * 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. }
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.
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
.
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 EasyTracker.
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( 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);
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 receber e enviar descrições de exceções ao 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. }
Também é possível implementar seu próprio analisador implementando a interface ExceptionParser
e chamando o método setDescription
dela ao enviar uma exceção ao Google Analytics.