Incidenti e eccezioni; SDK Android v2 (legacy)

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). Accetta null .
  • 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 {
  ArrayList highScores = 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.