Fallas y excepciones - Android SDK v2 (heredado)

En este documento, se proporciona una descripción general de alto nivel de las fallas y las mediciones de excepciones con el SDK de Google Analytics para Android v2.

Descripción general

La medición de fallas y excepciones te permite medir la cantidad y el tipo de fallas y excepciones detectadas y no detectadas en tu app. Una excepción en Google Analytics consiste en lo siguiente:

  • String (Opcional) Descripción: Una descripción de la excepción (hasta 100 caracteres). Acepta null.
  • boolean isFatal: Indica si la excepción fue grave. true indica un error irrecuperable.

Los datos de fallas y excepciones están disponibles principalmente en el informe de fallas y excepciones.

Excepciones detectadas

Las excepciones detectadas son errores en tu app para los que definiste código de manejo de excepciones. Por lo general, son errores que podrían ocurrir durante el uso normal de tu app y de los cuales deseas que se pueda recuperar, como el tiempo de espera ocasional de una conexión de red durante una solicitud de datos.

Puedes medir las excepciones capturadas si agregas sendException() al bloque catch de tu código de control de excepciones.

En el siguiente ejemplo, una app intenta cargar una lista de puntuaciones altas desde la nube. Si se agota el tiempo de espera de la solicitud, quizás debido a una conexión de red lenta, enviaremos la excepción a Google Analytics antes de procesarla para el usuario:

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

Medición de excepciones no detectadas

Las excepciones no detectadas representan instancias en las que tu app encontró condiciones inesperadas en el entorno de ejecución y, a menudo, son mortales, lo que provoca que la app falle. Las excepciones sin detectar se pueden enviar a Google Analytics automáticamente con EasyTracker o la clase ExceptionReporter.

Cómo usar EasyTracker

Para enviar automáticamente todas las excepciones no detectadas en la app mediante EasyTracker, agrega esta línea a tu archivo analytics.xml:

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

Después de enviar una excepción con la medición automática de excepciones, EasyTracker pasará la excepción al controlador de excepciones predeterminado de Thread.

Cuando uses la medición automática de excepciones, ten en cuenta lo siguiente:

  • Todas las excepciones enviadas con la medición automática de excepciones se informan como recuperables en Google Analytics.
  • El campo de descripción se propaga automáticamente con el seguimiento de pila.

Usa ExceptionReporter

Usa la clase ExceptionReporter para implementar la medición automática de excepciones no detectadas si no usas EasyTracker. Esta es la misma clase que EasyTracker implementa para manejar sus informes automáticos de excepciones.

ExceptionReporter puede servir como el controlador de excepciones no detectados predeterminado para un subproceso específico o todos los subprocesos de tu app. Después de enviar una excepción a Google Analytics, la clase ExceptionReporter puede pasar la excepción de forma opcional a un controlador de excepciones no detectados que proporciones.

El siguiente código crea un objeto ExceptionReporter nuevo y lo establece como el nuevo controlador de excepciones no detectados predeterminado. Como resultado, todas las excepciones no detectadas se enviarán a Google Analytics y, luego, se pasarán al controlador de excepciones no detectados anterior. Para la mayoría de las aplicaciones, el controlador predeterminado registrará la excepción en el registro y finalizará la aplicación.

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

Usa ExceptionParser

El SDK proporciona una interfaz ExceptionParser que puedes implementar para obtener las descripciones más relevantes de tus seguimientos de pila cuando envías excepciones no detectadas a Google Analytics. La interfaz ExceptionParser tiene un método: getDescription(String threadName, Throwable t).

Puedes llamar a setExceptionParser(ExceptionParser parser) para configurar tu Tracker de modo que use tu ExceptionParser cuando envíes excepciones no detectadas en Google Analytics:

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

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

La herramienta de seguimiento usará el método getDescription() de tu analizador para propagar el campo de descripción de las excepciones no detectadas que se enviaron a Google Analytics.