Questo documento fornisce una panoramica generale della misurazione di arresti anomali ed eccezioni utilizzando l'SDK di Google Analytics per Android v3.
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. Fanno eccezione i seguenti campi:
Nome campo | Campo tracker | Tipo | Obbligatorio | Descrizione |
---|---|---|---|---|
Descrizione |
|
|
No | Una descrizione dell'eccezione (fino a 100 caratteri). Accetta
null
. |
isFatal |
|
boolean
|
Sì | 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 un codice di gestione delle eccezioni, ad esempio il timeout occasionale di una connessione di rete durante una richiesta di dati.
Misura un'eccezione rilevata impostando i valori del campo dell'eccezione sul tracker e inviando l'hit, come in questo esempio:
/* * 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. }
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
.
Utilizzo di un'implementazione avanzata
Utilizza la classe ExceptionReporter
per implementare
la misurazione automatica delle eccezioni non rilevate se utilizzi un'implementazione avanzata e
non utilizzi EasyTracker.
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( 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);
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.
- Per impostazione predefinita, il campo della descrizione viene impostato automaticamente utilizzando il tipo di eccezione, il nome della classe, il nome del metodo e il nome del thread.
Descrizioni delle eccezioni di analisi
L'SDK fornisce un StandardExceptionParser
per semplificare la procedura di ricezione e invio delle descrizioni delle eccezioni a 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. }
Puoi anche implementare il tuo parser implementando l'interfaccia ExceptionParser
e chiamando il relativo metodo setDescription
quando invii un'eccezione a Google Analytics.