Setelah Anda menginstal Agen ARMS untuk aplikasi Java, ARMS mulai memantau aplikasi tersebut. Di halaman Exceptions, Anda dapat menyaring dan menganalisis pengecualian berdasarkan nama pengecualian, nama API, atau host guna mengoptimalkan kode yang menghasilkannya.
Cara pencatatan pengecualian bekerja
ARMS mencatat suatu pengecualian setiap kali pengecualian tersebut lolos dari blok try-catch dalam metode yang diinstrumentasi. Pengecualian yang ditangkap dan ditangani di dalam blok try-catch tidak dicatat.
Skenario berikut menggambarkan perilaku ini. Asumsikan Agen ARMS telah menginstrumentasi kedua metode methodA dan methodB:
Kedua metode menangkap pengecualian
public int methodA() {
try {
return methodB();
} catch (Throwable e) {
e.printStackTrace();
return 0;
}
}
public int methodB() {
try {
return 1 / 0;
} catch (Throwable e) {
e.printStackTrace();
return 0;
}
}Hasil: ARMS tidak mencatat pengecualian apa pun. Kedua pengecualian ditangkap dan ditangani di dalam blok try-catch masing-masing.
Hanya satu metode yang menangkap pengecualian
public int methodA() {
try {
return methodB();
} catch (Throwable e) {
e.printStackTrace();
return 0;
}
}
public int methodB() {
return 1 / 0;
}Hasil: ARMS mencatat satu pengecualian java.lang.ArithmeticException—tidak tertangkap di methodB.
Kedua metode tidak menangkap pengecualian
public int methodA() {
return methodB();
}
public int methodB() {
return 1 / 0;
}Hasil: ARMS mencatat dua pengecualian java.lang.ArithmeticException—satu untuk setiap metode yang diinstrumentasi tempat pengecualian menyebar tanpa tertangkap.
Menangkap dan melempar ulang sebagai tipe pengecualian yang berbeda
public static int methodA() {
try {
return methodB();
} catch (Throwable e) {
throw new RuntimeException(e);
}
}
public static int methodB() {
return 1 / 0;
}Hasil: ARMS mencatat dua pengecualian:
Satu pengecualian
java.lang.ArithmeticException—tidak tertangkap dimethodBSatu pengecualian
java.lang.RuntimeException—dilemparkan olehmethodA
Lihat analisis pengecualian
-
Masuk ke Konsol ARMS. Di panel navigasi kiri, pilih .
Di bilah navigasi atas, pilih .

Di bagian filter cepat (①), Anda dapat menyaring jumlah pengecualian dan daftar pengecualian berdasarkan Exception, API, atau Host.
Di bagian grafik tren (②), Anda dapat melihat jumlah pengecualian yang dilemparkan selama rentang waktu tertentu. Data ditumpuk berdasarkan jenis pengecualian.
Klik ikon
untuk melihat statistik metrik untuk periode waktu tertentu atau untuk membandingkan statistik periode yang sama pada tanggal berbeda. Klik ikon
untuk beralih antara grafik batang dan grafik tren.Di bagian daftar pengecualian (③), Anda dapat melihat nama API, jumlah pengecualian, persentase, serta ringkasan informasi pengecualian.
Di daftar pengecualian, Anda dapat melakukan operasi berikut:
Klik Overview di kolom Actions untuk membuka panel di sebelah kanan. Panel tersebut menampilkan informasi seperti tren jumlah pengecualian, distribusi pengecualian di berbagai API dan instans, serta jejak stack.

Klik Traces di kolom Actions untuk melihat detail jejak panggilan tersebut. Untuk informasi lebih lanjut, lihat Trace analysis.
Dokumentasi terkait
Untuk daftar lengkap metrik Application Monitoring, lihat Application Monitoring metrics.
FAQ
Jumlah pengecualian untuk suatu API melebihi jumlah permintaan
Hal ini dapat terjadi karena alasan berikut:
ARMS mencatat pengecualian saat dilemparkan oleh metode yang diinstrumentasi. Jika beberapa metode yang diinstrumentasi melemparkan pengecualian selama satu panggilan API, ARMS mencatat beberapa pengecualian untuk panggilan tersebut.
Jika pengecualian yang sama menyebar naik melalui stack metode melalui beberapa metode yang diinstrumentasi, ARMS mencatat pengecualian tersebut beberapa kali.
Data pengecualian berubah setelah upgrade agent
Versi agent yang berbeda dapat mengubah kumpulan metode yang diinstrumentasi. Ketika jumlah metode yang diinstrumentasi bertambah atau berkurang, jumlah pengecualian yang ditangkap juga berubah sesuai.
ARMS menampilkan pengecualian yang tidak ditangkap oleh logika bisnis
Pada banyak pustaka framework yang diinstrumentasi oleh agent, beberapa pengecualian ditangkap dan ditangani secara internal di tingkat framework dan tidak dilemparkan ke kode bisnis Anda. Agent menangkap pengecualian ini, tetapi aplikasi Anda tidak mengetahuinya.
Sebagai contoh, pemanggilan untuk mengakses MongoDB menggunakan MongoTemplate mungkin tidak melaporkan pengecualian di aplikasi Anda, tetapi Anda mungkin melihat pengecualian di Konsol ARMS. Hal ini karena MongoTemplate memiliki logika retry bawaan. Saat terjadi timeout, MongoTemplate mencoba ulang operasi tersebut dan hanya melemparkan pengecualian ke pemanggil setelah beberapa kali percobaan gagal. Oleh karena itu, jika Anda menggunakan MongoTemplate untuk mengakses MongoDB dan terjadi timeout serta retry di lapisan bawah, logika bisnis Anda mungkin tidak melihat pengecualian, tetapi Anda dapat melihat pengecualian di Konsol ARMS.
Jejak stack pengecualian tidak cocok
Untuk meningkatkan efisiensi pemrosesan dan pelaporan data, agent ARMS menghasilkan sidik jari untuk setiap pengecualian berdasarkan nama kelasnya, tiga baris pertama dari stack metode, dan tiga baris terakhir dari stack metode. Sidik jari ini kemudian dikodekan menjadi nilai 64-bit menggunakan CRC64. Saat pengecualian pertama kali terjadi, agent melaporkan nilai terkode dan nilai aslinya. Untuk pengecualian identik berikutnya, hanya nilai terkode yang dilaporkan. Hal ini dapat menyebabkan ketidaksesuaian antara jejak stack yang ditampilkan dengan jejak stack aktual dalam dua situasi:
Dua pengecualian memiliki stack metode lengkap yang berbeda tetapi memiliki nama kelas yang sama serta tiga baris pertama dan tiga baris terakhir stack metode yang sama. Logika pemrosesan ini menghasilkan nilai terkode yang identik, sehingga menyebabkan ketidaksesuaian.
Dua pengecualian memiliki nama kelas yang berbeda atau tiga baris pertama atau tiga baris terakhir stack metode yang berbeda, tetapi nilai terkode mereka sama. Hal ini dapat terjadi karena tabrakan hash dari algoritma pengkodean CRC64 yang tidak unik.
Jika salah satu situasi ini terjadi, Anda dapat menaikkan nilai parameter similar exception stack differentiation depth di bagian Exception Advanced Filtering Configuration pada halaman Custom Configurations.
Pengecualian ditampilkan sebagai ID setelah 30 hari
Untuk mengoptimalkan volume data yang dilaporkan, ARMS mengkodekan suatu pengecualian dan melaporkan nilai terkode beserta nilai aslinya ke server saat pengecualian pertama kali terjadi. Server menyimpan pemetaan ini, yang kedaluwarsa setelah 30 hari. Jika suatu aplikasi berjalan lebih dari 30 hari, server mungkin tidak lagi dapat mencari nilai pengecualian asli dari nilai terkode tersebut.
Pengecualian tidak ditampilkan di konsol
Secara default, agent ARMS hanya mengumpulkan pengecualian dari metode yang diinstrumentasinya.
Jika Anda menggunakan agent versi 4.1.12 atau yang lebih baru, Anda dapat membuka halaman Custom Configurations dan mengaktifkan plugin pengecualian di bagian agent switch settings. Setelah Anda mengaktifkan plugin tersebut, ARMS mengumpulkan data setiap kali sebuah instans pengecualian dibuat.