Abstürze und Ausnahmen

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

Überblick

Mit der Absturz- und Ausnahmemessung können Sie die Anzahl und die Art der erkannten und nicht abgefangenen Abstürze und Ausnahmen in Ihrer App messen. Eine Ausnahme hat folgende Felder:

Feldname Typ Erforderlich Beschreibung
Beschreibung String Nein Eine Beschreibung der Ausnahme (bis zu 100 Zeichen). Akzeptiert null.
isFatal boolean Ja Gibt an, ob es sich um einen schwerwiegenden Ausnahmefehler handelt. true weist auf einen schwerwiegenden Fehler hin.

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

Abgefangene Ausnahmen

Abgefangene Ausnahmen wie die gelegentliche Zeitüberschreitung einer Netzwerkverbindung während einer Datenanfrage sind Fehler in Ihrer App, für deren Verarbeitung Sie Code implementiert haben.

Zum Messen einer erkannten Ausnahme legen Sie die Ausnahmefeldwerte auf dem Tracker fest und senden den Treffer, wie in diesem Beispiel:

// Get tracker.
Tracker t =
    ((AnalyticsSampleApp) getActivity().getApplication()).getTracker(TrackerName.APP_TRACKER);

// Build and send exception.
t.send(new HitBuilders.ExceptionBuilder()
    .setDescription(getExceptionMethod() + ":" + getExceptionLocation())
    .setFatal(getExceptionFatal())
    .build());

Weitere Informationen zur Methode getTracker finden Sie unter Erweiterte Konfiguration.

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 zum Absturz der App. Nicht abgefangene Ausnahmen können automatisch an Google Analytics gesendet werden. Dazu legen Sie den Konfigurationswert ga_reportUncaughtExceptions fest oder verwenden die Klasse ExceptionReporter.

Automatische Konfiguration

Damit alle nicht abgefangenen Ausnahmen in Ihrer App automatisch an Google Analytics gesendet werden, fügen Sie der XML-Konfigurationsdatei diese Zeile hinzu:

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

Nachdem eine Ausnahme mithilfe der automatischen Ausnahmemessung gesendet wurde, wird die Ausnahme an den standardmäßigen Ausnahme-Handler von Thread übergeben.

Verwenden einer erweiterten Implementierung

Verwenden Sie die Klasse ExceptionReporter, um die automatische Messung nicht abgefangener Ausnahmen zu implementieren, wenn Sie eine erweiterte Implementierung und nicht den Konfigurationswert ga_reportUncaughtExceptions verwenden.

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.

Thread.UncaughtExceptionHandler myHandler = new ExceptionReporter(
    myTracker,
    Thread.getDefaultUncaughtExceptionHandler(),
    context);

// Make myHandler the new default uncaught exception handler.
Thread.setDefaultUncaughtExceptionHandler(myHandler);

Beachten Sie Folgendes, wenn Sie die automatische Ausnahmemessung verwenden:

  • Alle Ausnahmen, die mit der automatischen Ausnahmemessung gesendet werden, werden in Google Analytics als schwerwiegend gemeldet.
  • Standardmäßig wird das Beschreibungsfeld automatisch anhand des Ausnahmetyps, des Klassennamens, des Methodennamens und des Thread-Namens festgelegt.

Beschreibungen von Ausnahmen parsen

Das SDK bietet ein StandardExceptionParser-Objekt, um das Abrufen und Senden von Ausnahmebeschreibungen an Google Analytics zu vereinfachen:

// Get tracker.
Tracker t = ((AnalyticsSampleApp) getActivity().getApplication()).getTracker(
    TrackerName.APP_TRACKER);

// Using StandardExceptionParser to get an Exception description.
try {
    // Request some scores from the network.
    ArrayList<Integer> highScores = getHighScoresFromCloud();
} catch (IOException e) {
    t.send(new HitBuilders.ExceptionBuilder()
        .setDescription(new StandardExceptionParser(this, null)
            .getDescription(Thread.currentThread().getName(), e))
        .setFatal(false)
        .build()
    );

    ... // Display alert to user that high scores are currently unavailable.
}

Sie können auch einen eigenen Parser implementieren, indem Sie die ExceptionParser-Schnittstelle implementieren und deren Methode setDescription aufrufen, wenn eine Ausnahme an Google Analytics gesendet wird.