Error & Pengecualian - Android SDK

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 Fields.EX_DESCRIPTION String Tidak Deskripsi pengecualian (maksimal 100 karakter). Menerima null .
isFatal Fields.EX_FATAL 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.
  ArrayList highScores = 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.
  ArrayList highScores = 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.