Fallas y excepciones: SDK de Android versión 2 (heredado)

En este documento, se proporciona una descripción general de alto nivel de la medición de fallas y 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 detectadas y no detectadas, y las excepciones que se producen en tu app. Las excepciones en Google Analytics incluyen lo siguiente:

  • String (Opcional): Descripción de la excepción (hasta 100 caracteres) Acepta null .
  • boolean isFatal: Indica si la excepción fue irrecuperable. true indica 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 de tu app para los que definiste código de control de excepciones. Por lo general, son errores que esperas que ocurran durante el uso normal de tu app y de los cuales te gustaría que esta pueda recuperarse, como el tiempo de espera ocasional de una conexión de red durante una solicitud de datos.

Para medir las excepciones capturadas, agrega 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 sin detectar representan instancias en las que la app encontró condiciones inesperadas durante el tiempo de ejecución y, a menudo, son irrecuperables, lo que provoca que la app falle. Las excepciones sin detectar se pueden enviar automáticamente a Google Analytics a través de EasyTracker o la clase ExceptionReporter.

Cómo usar EasyTracker

Para enviar automáticamente todas las excepciones no detectadas en tu app con 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 utilices la medición automática de excepciones, ten en cuenta lo siguiente:

  • Todas las excepciones que se envían con la medición automática de excepciones se informan como irrecuperables 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 implementa EasyTracker para manejar sus informes automáticos de excepciones.

ExceptionReporter puede funcionar como el controlador predeterminado de excepciones no detectadas 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, de manera opcional, pasar la excepción a un controlador de excepciones no detectadas que proporciones.

Con el siguiente código, se crea un objeto ExceptionReporter nuevo y se establece como el nuevo controlador de excepciones no detectadas predeterminado. Como resultado, cada excepción no detectada se enviará a Google Analytics y, luego, se pasará al controlador de excepciones no detectadas 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 de 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 configurar tu Tracker para que use tu ExceptionParser cuando envíe excepciones no detectadas a Google Analytics llamando a setExceptionParser(ExceptionParser parser), como en este ejemplo:

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

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

Luego, tu 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 envían a Google Analytics.