Questo documento offre una panoramica di alto livello della misurazione di arresti anomali ed eccezioni utilizzando l'SDK Google Analytics per Android v2.
Panoramica
La misurazione di arresti anomali ed eccezioni ti consente di misurare il numero e il tipo di arresti anomali ed eccezioni riscontrati 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 un evento irreversibile.
I dati sugli arresti anomali e le eccezioni sono disponibili principalmente nel report Incidenti e eccezioni.
Eccezioni rilevate
Le eccezioni rilevate sono errori nella tua app per i quali hai definito un codice di gestione delle eccezioni. Si tratta generalmente di errori che prevedi che si devono verificare durante il normale utilizzo dell'app e da cui vorresti che l'app riuscisse, 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 di gestione delle eccezioni.
Nell'esempio seguente, un'app tenta di caricare un elenco di punteggi elevati dal cloud. Se la richiesta scade, forse 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 delle eccezioni non rilevate
Le eccezioni non rilevate rappresentano i casi in cui la tua app ha riscontrato condizioni impreviste in fase di runtime e spesso è mortale, causando un arresto anomalo dell'app. Le eccezioni non rilevate possono essere inviate automaticamente a Google Analytics utilizzando EasyTracker o la classe ExceptionReporter
.
Usare EasyTracker
Per inviare automaticamente tutte le eccezioni non rilevate nella tua app utilizzando EasyTracker, aggiungi questa riga al tuo file analytics.xml
:
<bool name="ga_reportUncaughtExceptions">true</bool>
Dopo aver inviato un'eccezione utilizzando la misurazione automatica delle eccezioni, EasyTracker trasmetterà l'eccezione al gestore di eccezioni predefinito di Thread
.
Quando utilizzi la misurazione automatica delle eccezioni, tieni presente quanto segue:
- Tutte le eccezioni inviate utilizzando la misurazione automatica delle eccezioni vengono segnalate 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 utilizzi EasyTracker. Si tratta della stessa classe implementata da EasyTracker per gestire i report sulle eccezioni automatiche.
ExceptionReporter
può servire come gestore predefinito senza eccezioni per un thread specifico o per tutti i thread nella tua app. Dopo aver inviato un'eccezione a Google Analytics, la classe ExceptionReporter
può trasferire facoltativamente un'eccezione a un gestore di eccezioni non raccolto che hai fornito.
Il codice seguente crea un nuovo oggetto ExceptionReporter
e lo imposta come nuovo gestore predefinito di eccezioni non rilevate. Di conseguenza, tutte
le eccezioni non rilevate verranno inviate a Google Analytics e inviate al precedente
gestore delle eccezioni non rilevate. 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 ricevere le descrizioni più pertinenti dalle analisi dello stack quando invii eccezioni non rilevate a Google Analytics. L'interfaccia ExceptionParser
ha un metodo:
getDescription(String threadName, Throwable t)
.
Puoi impostare Tracker
in modo che utilizzi il tuo ExceptionParser
quando invii eccezioni non rilevate in Google Analytics chiamando setExceptionParser(ExceptionParser parser)
come indicato 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 tuo tracker userà il metodo getDescription()
dell'analizzatore sintattico per completare il campo della descrizione di eventuali eccezioni non rilevate inviate a
Google Analytics.