Abstürze und Ausnahmen – Android SDK Version 2 (alte Version)

Dieses Dokument bietet eine allgemeine Übersicht über die Messung von Abstürzen und Ausnahmen mit dem Google Analytics SDK for Android Version 2.

Überblick

Mit der Messung von Abstürzen und Ausnahmen können Sie die Anzahl und Art der erkannten und nicht abgefangenen Abstürze sowie der Ausnahmen in Ihrer App messen. Eine Ausnahme in Google Analytics besteht aus:

  • String (Optional) Beschreibung: Beschreibung der Ausnahme (bis zu 100 Zeichen). Akzeptiert null.
  • boolean isFatal: Gibt an, ob die Ausnahme ein schwerwiegender Fehler war. true weist auf einen schwerwiegenden Fehler hin.

Absturz- und Ausnahmedaten sind hauptsächlich im Absturz- und Ausnahmebericht verfügbar.

Abgefangene Ausnahmen

Abgefangene Ausnahmen sind Fehler in Ihrer App, für die Sie Code für die Ausnahmebehandlung definiert haben. Dabei handelt es sich in der Regel um Fehler, die bei normaler Verwendung Ihrer App auftreten und diese wiederhergestellt werden können, z. B. die gelegentliche Zeitüberschreitung einer Netzwerkverbindung bei einer Datenanfrage.

Sie können erfasste Ausnahmen messen. Dazu fügen Sie sendException() in den Block catch Ihres Codes zur Ausnahmebehandlung ein.

Im folgenden Beispiel versucht eine Anwendung, eine Liste von Highscores aus der Cloud zu laden. Wenn bei der Anfrage eine Zeitüberschreitung auftritt, etwa aufgrund einer langsamen Netzwerkverbindung, senden wir die Ausnahme an Google Analytics, bevor wir sie für den Nutzer verarbeiten:

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

Messung nicht abgefangener Ausnahmen

Nicht abgefangene Ausnahmen stellen Instanzen dar, bei denen während der Laufzeit unerwartete Bedingungen in der App aufgetreten sind. Diese sind häufig schwerwiegend und führen deshalb zum Absturz der App. Nicht abgefangene Ausnahmen können mithilfe von EasyTracker oder der ExceptionReporter-Klasse automatisch an Google Analytics gesendet werden.

Verwenden von EasyTracker

Wenn Sie automatisch alle nicht erfassten Ausnahmen in Ihrer App mit EasyTracker senden möchten, fügen Sie diese Zeile in die Datei analytics.xml ein:

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

Nachdem Sie eine Ausnahme mithilfe der automatischen Ausnahmemessung gesendet haben, übergibt EasyTracker die Ausnahme an den standardmäßigen Ausnahme-Handler des Thread.

Beachten Sie bei der automatischen Messung von Ausnahmen Folgendes:

  • Alle Ausnahmen, die mit der automatischen Ausnahmemessung gesendet werden, werden in Google Analytics als schwerwiegend gemeldet.
  • Das Beschreibungsfeld wird über den Stacktrace automatisch ausgefüllt.

ExceptionReporter verwenden

Verwenden Sie die Klasse ExceptionReporter, um die automatische Messung nicht abgefangener Ausnahmen zu implementieren, wenn Sie EasyTracker nicht verwenden. Dies ist die gleiche Klasse, die EasyTracker für seine automatischen Ausnahmeberichte implementiert.

ExceptionReporter kann als standardmäßiger nicht abgefangener Ausnahme-Handler für einen bestimmten Thread oder für alle Threads in Ihrer Anwendung dienen. Nachdem eine Ausnahme an Google Analytics gesendet wurde, kann die ExceptionReporter-Klasse die Ausnahme optional an einen nicht abgefangenen Ausnahme-Handler übergeben, den Sie bereitstellen.

Mit dem folgenden Code wird ein neues ExceptionReporter-Objekt erstellt und als neuer standardmäßiger nicht abgefangener Ausnahme-Handler festgelegt. Daher wird jede nicht erfasste Ausnahme an Google Analytics gesendet und dann an den vorherigen nicht abgefangenen Ausnahme-Handler übergeben. Bei den meisten Anwendungen protokolliert der Standard-Handler die Ausnahme im Log und beendet die Anwendung.

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

ExceptionParser verwenden

Das SDK bietet eine ExceptionParser-Schnittstelle, die Sie implementieren können, um die relevantesten Beschreibungen aus Ihren Stacktraces zu erhalten, wenn nicht erfasste Ausnahmen an Google Analytics gesendet werden. Für die Schnittstelle ExceptionParser gibt es eine Methode: getDescription(String threadName, Throwable t).

Sie können festlegen, dass Tracker beim Senden nicht abgefangener Ausnahmen an Google Analytics den ExceptionParser verwendet. Rufen Sie dazu setExceptionParser(ExceptionParser parser) wie im folgenden Beispiel auf:

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

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

Der Tracker verwendet dann die Methode getDescription() des Parsers, um das Beschreibungsfeld aller nicht abgefangenen Ausnahmen auszufüllen, die an Google Analytics gesendet werden.