Arresti anomali ed eccezioni - SDK per Android v2 (legacy)

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