Plantages et exceptions – SDK Android v2 (ancien)

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 v2.

Présentation

La mesure des plantages et des exceptions vous permet de mesurer le nombre et le type de plantages et d'exceptions repérés et non détectés dans votre application. Une exception Google Analytics comprend les éléments suivants:

  • String (Facultatif) Description : description de l'exception (100 caractères maximum). Accepte les null.
  • boolean isFatal : indique si l'exception était 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 du code de gestion des exceptions. Il s'agit généralement d'erreurs qui peuvent se produire lors de l'utilisation normale de votre application et pour lesquelles vous souhaitez que votre application puisse récupérer, telles que le délai d'inactivité occasionnel d'une connexion réseau lors d'une requête de données.

Vous pouvez mesurer les exceptions interceptées en ajoutant sendException() au bloc catch de votre code de gestion des exceptions.

Dans l'exemple suivant, une application tente de charger une liste de scores élevés à partir du cloud. Si la demande expire, peut-être en raison d'une connexion réseau lente, nous envoyons l'exception à Google Analytics avant de la traiter pour l'utilisateur:

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.
}

Mesure des exceptions non détectées

Les exceptions non détectées représentent les instances où votre application a rencontré des conditions inattendues au moment de l'exécution et sont souvent fatales, ce qui entraîne 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.

Lorsque vous utilisez la mesure automatique des exceptions, tenez compte des points suivants:

  • Toutes les exceptions envoyées à l'aide de la mesure automatique des exceptions sont signalées comme fatales dans Google Analytics.
  • Le champ de description est renseigné automatiquement à l'aide de la trace de la pile.

Utiliser ExceptionReporter

Utilisez la classe ExceptionReporter pour implémenter la mesure automatique des exceptions non capturées si vous n'utilisez pas EasyTracker. Il s'agit de la même classe qu'EasyTracker implémente pour gérer la création automatique de rapports d'exceptions.

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

Utiliser ExceptionParser

Le SDK fournit une interface ExceptionParser que vous pouvez implémenter pour obtenir les descriptions les plus pertinentes à partir de vos traces de pile lorsque vous envoyez des exceptions non détectées à Google Analytics. L'interface ExceptionParser comporte une méthode : getDescription(String threadName, Throwable t).

Vous pouvez configurer votre Tracker pour qu'il utilise votre ExceptionParser lors de l'envoi d'exceptions non détectées à Google Analytics en appelant setExceptionParser(ExceptionParser parser), comme dans cet exemple:

// Where myParser represents your implementation of ExceptionParser.
ExceptionParser parser = new myParser(context);

// Where myTracker is an instance of Tracker.
myTracker.setExceptionParser(parser);

Votre outil de suivi utilisera ensuite la méthode getDescription() de votre analyseur pour renseigner le champ de description de toutes les exceptions non détectées qui ont été envoyées à Google Analytics.