Questo documento fornisce una panoramica generale della misurazione di arresti anomali ed eccezioni utilizzando l'SDK di Google Analytics per Android v2.
Panoramica
La misurazione degli arresti anomali e delle eccezioni consente di misurare il numero e il tipo di eccezioni e arresti anomali rilevati e non rilevati che si verificano nella tua app. Un'eccezione in Google Analytics consiste in:
String
(Facoltativo) Descrizione: una descrizione dell'eccezione (fino a 100 caratteri). Accettanull
.boolean
isFatal: indica se l'eccezione è stata irreversibile.true
indica che è irreversibile.
I dati su arresti anomali ed eccezioni sono disponibili principalmente nel report Arresti anomali ed eccezioni.
Eccezioni rilevate
Le eccezioni rilevate sono errori nell'app per i quali hai definito il codice di gestione delle eccezioni. Si tratta in genere di errori che prevedi si verifichino durante il normale utilizzo dell'app e da cui vorresti che l'app sia in grado di recuperare, ad esempio il timeout occasionale di una connessione di rete durante una richiesta di dati.
Puoi misurare le eccezioni rilevate aggiungendo
sendException()
al blocco catch
del codice per la gestione delle eccezioni.
Nell'esempio seguente, un'app tenta di caricare un elenco dei punteggi migliori dal cloud. Se la richiesta scade, magari a causa di una connessione di rete lenta, invieremo l'eccezione a Google Analytics prima di gestirla per l'utente:
try { ArrayListhighScores = 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. }
Misurazione eccezioni non rilevate
Le eccezioni non rilevate rappresentano i casi in cui l'app ha riscontrato condizioni impreviste in fase di runtime e spesso sono irreversibili, causando l'arresto anomalo dell'app. Le eccezioni non rilevate possono essere inviate automaticamente a Google Analytics
utilizzando EasyTracker o la classe ExceptionReporter
.
Uso di EasyTracker
Per inviare automaticamente tutte le eccezioni non rilevate nella tua app utilizzando EasyTracker,
aggiungi questa riga al file analytics.xml
:
<bool name="ga_reportUncaughtExceptions">true</bool>
Dopo aver inviato un'eccezione utilizzando la misurazione automatica delle eccezioni, EasyTracker trasmette l'eccezione al gestore delle eccezioni predefinito di Thread
.
Quando utilizzi la misurazione delle eccezioni automatica, tieni presente quanto segue:
- Tutte le eccezioni inviate utilizzando la misurazione delle eccezioni automatica vengono registrate come irreversibili in Google Analytics.
- Il campo della descrizione viene compilato automaticamente utilizzando l'analisi dello stack.
Utilizzo di ExceptionReporter
Utilizza la classe ExceptionReporter
per implementare la misurazione automatica
delle eccezioni non rilevate se non usi EasyTracker. Si tratta della stessa classe che EasyTracker implementa per gestire la segnalazione automatica delle eccezioni.
ExceptionReporter
può fungere da gestore di eccezioni predefinito non rilevato per un thread specifico o per tutti i thread nella tua app. Dopo aver inviato un'eccezione a Google Analytics, la classe ExceptionReporter
può facoltativamente passare l'eccezione a un gestore delle eccezioni non rilevato da te fornito.
Il seguente codice crea un nuovo oggetto ExceptionReporter
e
lo imposta come nuovo gestore delle eccezioni predefinito non rilevato. Di conseguenza, ogni eccezione non rilevata viene inviata a Google Analytics e poi trasmessa al gestore delle eccezioni non rilevato precedente. Per la maggior parte delle applicazioni, il gestore predefinito registra l'eccezione nel log e termina l'applicazione.
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);
Utilizzo di ExceptionParser
L'SDK fornisce un'interfaccia ExceptionParser
che puoi implementare per ottenere le descrizioni più pertinenti dalle analisi dello stack quando invii eccezioni non rilevate a Google Analytics. L'interfaccia di ExceptionParser
prevede un metodo: getDescription(String threadName, Throwable t)
.
Puoi impostare Tracker
in modo che utilizzi ExceptionParser
per l'invio di eccezioni non rilevate a Google Analytics chiamando il numero setExceptionParser(ExceptionParser parser)
, come in questo esempio:
// Where myParser represents your implementation of ExceptionParser. ExceptionParser parser = new myParser(context); // Where myTracker is an instance of Tracker. myTracker.setExceptionParser(parser);
Il tracker utilizzerà quindi il metodo getDescription()
del parser per compilare il campo della descrizione di eventuali eccezioni non rilevate inviate a
Google Analytics.