Dokumen ini memberikan ringkasan umum tentang pengukuran error dan pengecualian menggunakan Google Analytics SDK untuk Android v3.
Ringkasan
Pengukuran error dan pengecualian memungkinkan Anda mengukur jumlah dan jenis error dan pengecualian yang tertangkap dan tidak tertangkap yang terjadi di aplikasi Anda. Pengecualian memiliki kolom berikut:
Nama Kolom | Kolom Pelacak | Jenis | Wajib | Deskripsi |
---|---|---|---|---|
Deskripsi |
|
|
Tidak | Deskripsi pengecualian (maksimal 100 karakter). Menerima
null
. |
isFatal |
|
boolean
|
Ya | Menunjukkan apakah pengecualian bersifat fatal atau tidak.
true
menunjukkan fatal. |
Data error dan pengecualian hanya tersedia di laporan Error dan Pengecualian.
Pengecualian yang Tertangkap
Pengecualian yang tertangkap adalah error di aplikasi yang kode penanganan pengecualiannya telah Anda tetapkan, seperti waktu tunggu koneksi jaringan sesekali berlangsung selama permintaan data.
Ukur pengecualian yang tertangkap dengan menetapkan nilai kolom pengecualian di pelacak dan mengirim hit, seperti dalam contoh ini:
/* * An app tries to load a list of high scores from the cloud. If the request * times out, an exception is sent to Google Analytics */ try { // Request some scores from the network. ArrayListhighScores = getHighScoresFromCloud(); } catch (IOException e) { // May return null if EasyTracker has not yet been initialized with a // property ID. EasyTracker easyTracker = EasyTracker.getInstance(this); // StandardExceptionParser is provided to help get meaningful Exception descriptions. easyTracker.send(MapBuilder .createException(new StandardExceptionParser(this, null) // Context and optional collection of package names // to be used in reporting the exception. .getDescription(Thread.currentThread().getName(), // The name of the thread on which the exception occurred. e), // The exception. false) // False indicates a nonfatal exception .build() ); ... // Display alert to user that high scores are currently unavailable. }
Pengukuran Pengecualian yang Tidak Tertangkap
Pengecualian yang tidak tertangkap mewakili instance saat aplikasi mengalami
kondisi yang tidak terduga saat runtime dan sering bersifat fatal, sehingga menyebabkan aplikasi error.
Pengecualian yang tidak tertangkap dapat otomatis dikirim ke Google Analytics dengan menggunakan EasyTracker atau class ExceptionReporter
.
Menggunakan EasyTracker
Untuk otomatis mengirim semua pengecualian yang tidak tertangkap di aplikasi Anda menggunakan EasyTracker,
tambahkan baris ini ke file analytics.xml
Anda:
<bool name="ga_reportUncaughtExceptions">true</bool>
Setelah mengirim pengecualian menggunakan pengukuran pengecualian otomatis, EasyTracker
akan meneruskan pengecualian ke pengendali pengecualian default
Thread
.
Menggunakan Implementasi Lanjutan
Gunakan class ExceptionReporter
untuk mengimplementasikan pengukuran pengecualian
yang tidak tertangkap otomatis jika Anda menggunakan implementasi lanjutan dan
tidak menggunakan EasyTracker.
ExceptionReporter
dapat berfungsi sebagai pengendali pengecualian default yang tidak tertangkap untuk thread tertentu atau semua thread di aplikasi Anda. Setelah mengirim pengecualian ke Google Analytics, class ExceptionReporter
dapat secara opsional meneruskan pengecualian ke pengendali pengecualian yang tidak tertangkap yang Anda berikan.
Kode berikut membuat objek ExceptionReporter
baru dan
menetapkannya sebagai pengendali pengecualian yang tidak tertangkap default baru. Akibatnya, setiap pengecualian yang tidak tertangkap akan dikirim ke Google Analytics, lalu diteruskan ke pengendali pengecualian yang tidak tertangkap sebelumnya. Untuk sebagian besar aplikasi, pengendali default akan mencatat pengecualian ke log dan menghentikan aplikasi.
UncaughtExceptionHandler myHandler = new ExceptionReporter( GoogleAnalytics.getInstance(this).getDefaultTracker(), // Tracker, may return null if not yet initialized. GAServiceManager.getInstance(), // GAServiceManager singleton. Thread.getDefaultUncaughtExceptionHandler()); // Current default uncaught exception handler. // Make myHandler the new default uncaught exception handler. Thread.setDefaultUncaughtExceptionHandler(myHandler);
Saat menggunakan pengukuran pengecualian otomatis, perhatikan hal berikut:
- Semua pengecualian yang dikirim menggunakan pengukuran pengecualian otomatis dilaporkan sebagai fatal di Google Analytics.
- Secara default, kolom deskripsi ditetapkan secara otomatis menggunakan jenis pengecualian, nama class, nama metode, dan nama thread.
Deskripsi Mengurai Pengecualian
SDK menyediakan StandardExceptionParser
untuk menyederhanakan proses mendapatkan dan mengirim deskripsi pengecualian ke Google Analytics:
// Using StandardExceptionParser to get an Exception description. try { // Request some scores from the network. ArrayListhighScores = getHighScoresFromCloud(); } catch (IOException e) { // May return null if EasyTracker has not yet been initialized with a // property ID. EasyTracker easyTracker = EasyTracker.getInstance(this); easyTracker.send(MapBuilder .createException(new StandardExceptionParser(this, null) // Context and optional collection of package names // to be used in reporting the exception. .getDescription(Thread.currentThread().getName(), // The name of the thread on which the exception occurred. e), // The exception. false) // False indicates a fatal exception .build() ); ... // Display alert to user that high scores are currently unavailable. }
Anda juga dapat mengimplementasikan parser Anda sendiri dengan mengimplementasikan antarmuka ExceptionParser
dan memanggil metode setDescription
-nya saat mengirim pengecualian ke Google Analytics.