Plantages et exceptions – SDK Android

Ce document offre une présentation générale de la mesure des plantages et des exceptions à l'aide du SDK Google Analytics pour Android v3.

Présentation

La mesure des plantages et des exceptions vous permet de mesurer le nombre et le type de plantages et d'exceptions interceptés et non détectés dans votre application. Une exception comporte les champs suivants:

Nom du champ Champ de suivi Type Obligatoire Description
Description Fields.EX_DESCRIPTION String Non Description de l'exception (100 caractères maximum). Accepte les null.
isFatal Fields.EX_FATAL boolean Oui Indique s'il s'agit d'une exception fatale. true indique une erreur fatale.

Les données sur les plantages et les exceptions sont principalement disponibles dans le rapport "Plantages et exceptions".

Exceptions capturées

Les exceptions détectées sont des erreurs dans votre application pour lesquelles vous avez défini un code de traitement des exceptions, telles que le délai d'inactivité occasionnel d'une connexion réseau lors d'une requête de données.

Mesurez une exception interceptée en définissant les valeurs du champ d'exception sur l'outil de suivi et en envoyant l'appel, comme dans cet exemple:

/*
 * 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.
  ArrayList highScores = 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.
}

Mesure des exceptions non détectées

Les exceptions non détectées correspondent aux instances où votre application a rencontré des conditions inattendues au moment de l'exécution et sont souvent fatales, entraînant le plantage de l'application. Les exceptions non détectées peuvent être envoyées automatiquement à Google Analytics à l'aide d'EasyTracker ou de la classe ExceptionReporter.

Utilisation d'EasyTracker

Pour envoyer automatiquement toutes les exceptions non détectées dans votre application à l'aide d'EasyTracker, ajoutez la ligne suivante à votre fichier analytics.xml :

<bool name="ga_reportUncaughtExceptions">true</bool>

Après avoir envoyé une exception à l'aide de la mesure automatique des exceptions, EasyTracker la transmet au gestionnaire d'exceptions par défaut de Thread.

Utiliser une implémentation avancée

Utilisez la classe ExceptionReporter pour implémenter la mesure automatique des exceptions non capturées si vous utilisez une implémentation avancée et non EasyTracker.

ExceptionReporter peut servir de gestionnaire d'exceptions non capturées par défaut pour un thread spécifique ou pour tous les threads de votre application. Après avoir envoyé une exception à Google Analytics, la classe ExceptionReporter peut éventuellement la transmettre à un gestionnaire d'exceptions non détecté que vous fournissez.

Le code suivant crée un objet ExceptionReporter et le définit comme nouveau gestionnaire d'exceptions non capturés par défaut. Par conséquent, chaque exception non détectée est envoyée à Google Analytics, puis transmise à l'ancien gestionnaire d'exceptions non capturées. Pour la plupart des applications, le gestionnaire par défaut consigne l'exception dans le journal et arrête l'application.

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);

Lorsque vous utilisez la mesure automatique des exceptions, gardez à l'esprit les points suivants:

  • Toutes les exceptions envoyées à l'aide de la mesure automatique des exceptions sont signalées comme fatales dans Google Analytics.
  • Par défaut, le champ de description est automatiquement défini à l'aide du type d'exception, du nom de classe, du nom de la méthode et du nom du thread.

Descriptions des exceptions d'analyse

Le SDK fournit un StandardExceptionParser pour simplifier le processus d'obtention et d'envoi de descriptions d'exceptions à Google Analytics :

// Using StandardExceptionParser to get an Exception description.
try {

  // Request some scores from the network.
  ArrayList highScores = 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.
}

Vous pouvez également implémenter votre propre analyseur en implémentant l'interface ExceptionParser et en appelant sa méthode setDescription lors de l'envoi d'une exception à Google Analytics.