Error & Pengecualian - Android SDK v2 (Lama)

Dokumen ini memberikan ringkasan umum tentang pengukuran error dan pengecualian menggunakan Google Analytics SDK untuk Android v2.

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 di Google Analytics terdiri dari:

  • String (Opsional) Deskripsi – deskripsi pengecualian (maksimal 100 karakter). Menerima null .
  • boolean isFatal – menunjukkan apakah pengecualian tersebut 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 tentukan. Umumnya ini adalah error yang diperkirakan akan terjadi selama penggunaan normal aplikasi, dan Anda ingin aplikasi dapat dipulihkan, seperti waktu tunggu koneksi jaringan sesekali berlangsung selama permintaan data.

Anda dapat mengukur pengecualian yang tertangkap dengan menambahkan sendException() ke blok catch kode penanganan pengecualian Anda.

Pada contoh berikut, aplikasi mencoba memuat daftar skor tertinggi dari cloud. Jika waktu tunggu permintaan habis, mungkin karena koneksi jaringan yang lambat, kami akan mengirimkan pengecualian ke Google Analytics sebelum menanganinya untuk pengguna:

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

Pengukuran Pengecualian yang Tidak Tertangkap

Pengecualian yang tidak tertangkap mewakili instance saat aplikasi mengalami kondisi yang tidak terduga pada 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.

Saat menggunakan pengukuran pengecualian otomatis, perhatikan hal berikut:

  • Semua pengecualian yang dikirim menggunakan pengukuran pengecualian otomatis dilaporkan sebagai fatal di Google Analytics.
  • Kolom deskripsi diisi secara otomatis menggunakan pelacakan tumpukan.

Menggunakan ExceptionReporter

Gunakan class ExceptionReporter untuk menerapkan pengukuran pengecualian yang tidak tertangkap otomatis jika Anda tidak menggunakan EasyTracker. Ini adalah class yang sama dengan yang diimplementasikan EasyTracker untuk menangani pelaporan pengecualian otomatisnya.

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

Menggunakan ExceptionParser

SDK menyediakan antarmuka ExceptionParser yang dapat Anda terapkan untuk mendapatkan deskripsi yang paling relevan dari pelacakan tumpukan saat mengirim pengecualian yang tidak tertangkap ke Google Analytics. Antarmuka ExceptionParser memiliki satu metode: getDescription(String threadName, Throwable t).

Anda dapat menetapkan Tracker untuk menggunakan ExceptionParser saat mengirim pengecualian yang tidak tertangkap ke Google Analytics dengan memanggil setExceptionParser(ExceptionParser parser) seperti dalam contoh berikut:

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

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

Pelacak Anda kemudian akan menggunakan metode getDescription() parser untuk mengisi kolom deskripsi setiap pengecualian yang tidak tertangkap yang dikirim ke Google Analytics.