Apakah ada fitur yang secara otomatis akan menghentikan debugging pada kejadian pengecualian pertama?
Jadi kita
- mulai aplikasi
- lakukan sesuatu yang melempar pengecualian
- IntelliJ muncul garis yang disorot di mana pengecualian terjadi.
Apakah ada fitur yang secara otomatis akan menghentikan debugging pada kejadian pengecualian pertama?
Jadi kita
Jawaban:
Jalankan | Lihat Breakpoints | Breakpoint Pengecualian
Cara cepat untuk memunculkan dialog adalah dengan menekan Ctrl+ SHIFT+ F8(Pada Mac: Cmd+ SHIFT+F8 ), lalu klik ke tab breakpoint pengecualian. Jika itu adalah tab terakhir yang Anda lihat, itu masih akan dipilih, membuatnya mudah untuk menjentikkan pada pengecualian aktif dan nonaktif.
Ini akan menyebabkan IntelliJ memecah pada titik dalam kode (atau kode pustaka) di mana pengecualian muncul. Secara khusus, Anda mendapatkan 'peluang pertama' pada penanganan pengecualian, sebelum tumpukan berjalan mencari tangkapan / akhirnya blok untuk dieksekusi.
TIP: Java cenderung membuang banyak pengecualian secara internal saat memuat kelas, jadi melanggar semua pengecualian ini bisa menjadi sangat membosankan. Berita baiknya adalah Anda dapat mengecualikan beberapa jenis pengecualian menggunakan bidang kondisi .
Sebagai contoh:
!(this instanceof java.lang.ClassNotFoundException)
Anda dapat menggabungkan beberapa kondisi seperti itu bersama &&
.
Di IntelliJ IDEA 14, buka:
Run -> View Breakpoints -> Check "Java Exceptions Breakpoints" -> Uncheck "Caught Exceptions"
Jika Anda tidak hapus centang Caught Exceptions
, eksekusi akan dihentikan setiap kali Java Framework
ada pengecualian internal.
Jika Anda mengklik tanda "+" kecil di sudut kiri atas, Anda dapat menambahkan breakpoint baru. Jika Anda memilih Exception Breakpoint, Anda mendapatkan sedikit dialog di mana Anda bisa masuk ke kelas pengecualian untuk istirahat (jika Anda tidak ingin istirahat pada semua pengecualian).
Dalam versi yang lebih baru di intellij di bawah Run > View Breakpoints .
Kemudian periksa Java Exception Breakpoints -> Any Exception .
Cara yang baik untuk men-debug pengecualian adalah dengan menggunakan paket aplikasi utama Anda dan kartu liar .*
. Dengan cara ini Anda melewatkan semua pengecualian perpustakaan lain, karena sebagian besar waktu Anda mencari pengecualian yang dilemparkan oleh aplikasi Anda dan bukan oleh perpustakaan lain (yang bisa menjadi banyak pengecualian).
Sebagai contoh ditunjukkan pada gambar yang saya gunakan com.gs.mercury.*
untuk istirahat setiap kali aplikasi melempar pengecualian. Jika Anda menggunakan pengecualian untuk apa fungsinya (untuk menangani kasus luar biasa dan tidak menangani aliran situasi normal), Anda hanya akan berhenti ketika Anda mencapai pengecualian yang diinginkan hampir sepanjang waktu.
PD Jawabannya ditambahkan hanya untuk menunjukkan filter kelas Catch yang cukup berguna .