Error dan Pengecualian

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

Ringkasan

Pengukuran error dan pengecualian memungkinkan Anda mengukur jumlah dan jenis error yang tertangkap dan tidak tertangkap serta pengecualian yang terjadi di aplikasi Anda. Pengecualian memiliki kolom berikut:

Nama Kolom Jenis Wajib Deskripsi
Deskripsi String 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, seperti waktu tunggu koneksi jaringan yang kadang-kadang habis selama permintaan data, adalah error di aplikasi yang telah Anda terapkan kode untuk menanganinya.

Ukur pengecualian yang tertangkap dengan menetapkan nilai kolom pengecualian di pelacak dan mengirim hit, seperti dalam contoh ini:

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

Lihat Konfigurasi Lanjutan untuk detail tentang metode getTracker.

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 menetapkan nilai konfigurasi ga_reportUncaughtExceptions atau menggunakan class ExceptionReporter.

Konfigurasi Otomatis

Untuk mengirim semua pengecualian yang tidak tertangkap di aplikasi Anda secara otomatis ke Google Analytics, tambahkan baris ini ke file konfigurasi XML Anda:

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

Setelah mengirim pengecualian menggunakan pengukuran pengecualian otomatis, pengecualian tersebut akan diteruskan 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 nilai konfigurasi ga_reportUncaughtExceptions.

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.

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

// 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:

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

Anda juga dapat mengimplementasikan parser Anda sendiri dengan mengimplementasikan antarmuka ExceptionParser dan memanggil metode setDescription-nya saat mengirim pengecualian ke Google Analytics.