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). Akzeptiertnull
.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 { ArrayListhighScores = 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.