Dalam praktiknya, penanganan pengecualian lebih dari sekadar mengetahui sintaksisnya. Menulis kode yang kuat lebih merupakan sebuah seni dan dalam artikel ini, praktik terbaik penanganan pengecualian Java akan dibahas. Praktik terbaik Java ini mengikuti pustaka JDK standar, dan beberapa kode sumber terbuka untuk menangani kesalahan dan pengecualian. Ini juga merupakan panduan praktis bagi pemrogram Java untuk menulis kode yang kuat. Praktik terbaik untuk penanganan pengecualian dalam pemrograman Java
Berikut adalah kumpulan 10 praktik terbaik saya untuk penanganan pengecualian dalam pemrograman Java. Ada pujian dan kritik untuk pengecualian yang diperiksa dalam pemrograman Java. Penanganan paksa terhadap pengecualian adalah fungsi dari bahasa tersebut. Pada artikel ini, kami akan mencoba meminimalkan penggunaan pengecualian yang dicentang dan mempelajari cara menggunakan pengecualian yang dicentang vs. tidak dicentang dalam pemrograman Java.
1) Gunakan pengecualian yang dicentang untuk kesalahan yang dapat dipulihkan dan kesalahan yang tidak dicentang untuk kesalahan pemrograman.
Memilih pengecualian yang dicentang atau tidak selalu membingungkan pemrogram Java. Pengecualian yang dicentang memastikan bahwa Anda menyediakan kode penanganan pengecualian untuk kondisi kesalahan. Ini adalah cara dari bahasa untuk memaksa Anda menulis kode yang kuat, tetapi juga menimbulkan banyak kekacauan dan membuatnya tidak dapat dibaca. Tentu saja, menangkap pengecualian dan melakukan sesuatu untuk mengatasinya tampaknya masuk akal jika Anda memiliki strategi penggantian dan pemulihan. Pilih antara pengecualian yang dicentang atau pengecualian runtime dalam pemrograman Java. Untuk informasi selengkapnya, lihat pengecualian yang dicentang vs tidak dicentang.
2) Tutup atau lepaskan sumber daya di blok akhirnya
Ini adalah praktik terbaik yang terkenal dalam pemrograman Java dan setara dengan standar ketika berhadapan dengan kelas jaringan dan IO. Menutup sumber daya di blok akhirnya memastikan pelepasan sumber daya yang sebelumnya tersedia dan langka secara wajar dalam kondisi eksekusi normal dan tidak normal, yang dijamin oleh blok akhirnya. Dimulai dengan Java 7, bahasa ini memiliki fitur yang lebih menarik: otomatisasi manajemen sumber daya atau blok ARM dapat mengimplementasikan fitur ini. Meskipun demikian, kita masih harus ingat untuk menutup sumber daya di blok akhirnya, yang penting untuk melepaskan sumber daya terbatas seperti FileDescriptors, yang digunakan dalam situasi pemrograman soket dan file.
3) Sertakan penyebab pengecualian dalam pelacakan tumpukan
Seringkali, perpustakaan Java dan kode sumber terbuka menggabungkan satu pengecualian ke pengecualian lainnya ketika pengecualian muncul yang disebabkan oleh pengecualian lain. Mencatat dan mencetak pengecualian root menjadi sangat penting. Kelas pengecualian Java menyediakan metode getCause() untuk mengambil penyebab pengecualian, yang dapat memberikan informasi lebih lanjut tentang penyebab pengecualian di tingkat akar. Latihan Java ini sangat membantu saat melakukan debug atau pemecahan masalah. Selalu ingat bahwa jika Anda menggabungkan pengecualian ke dalam pengecualian lain, Anda harus meneruskan pengecualian sumber saat membuat pengecualian baru.
4) Selalu memberikan informasi yang bermakna dan lengkap tentang pengecualian
Informasi pengecualian adalah tempat yang paling penting karena merupakan tempat pertama yang dilihat oleh programmer dan di sinilah Anda dapat menemukan akar penyebab masalahnya. Informasi yang akurat dan otentik selalu disediakan di sini. Misalnya, bandingkan dua pesan pengecualian dari pengecualian IllegalArgumentException:
Pesan 1: “Argumen metode salah”
Pesan 2: “Nilai ilegal untuk ${argument}: ${value}
Pesan pertama hanya menyatakan bahwa parameter tersebut ilegal atau salah, tetapi pesan kedua menyertakan nama parameter dan nilai ilegal, yang penting untuk menemukan penyebab kesalahan. Selalu ikuti praktik terbaik Java ini saat menulis kode penanganan pengecualian dalam pemrograman Java.
5) Hindari penggunaan pengecualian yang dicentang secara berlebihan
Pengecualian yang dicentang memiliki keuntungan tertentu dalam menegakkan eksekusi, namun pengecualian tersebut juga merusak kode dan membuat kode kurang mudah dibaca dengan menutupi logika bisnis. Selama Anda tidak terlalu sering menggunakan pengecualian yang dicentang, Anda dapat meminimalkan situasi ini, dan hasilnya adalah kode yang lebih bersih. Anda juga dapat menggunakan fitur Java 7 baru seperti satu blok tangkapan untuk beberapa pengecualian dan manajemen sumber daya otomatis untuk menghapus duplikat.
6) Ubah pengecualian yang dicentang menjadi pengecualian runtime
Ini adalah salah satu teknik yang digunakan untuk membatasi penggunaan pengecualian yang dicentang di sebagian besar kerangka kerja seperti Spring. Sebagian besar pengecualian yang dicentang dari JDBC dibungkus dalam DataAccessException, dan pengecualian (DataAccessException) adalah pengecualian yang tidak dicentang. Ini adalah manfaat yang dibawa oleh praktik terbaik Java. Pengecualian khusus dibatasi pada modul tertentu, seperti SQLException, yang ditempatkan di lapisan DAO, dan pengecualian waktu proses dengan arti yang jelas dilemparkan ke lapisan klien.
7) Ingatlah bahwa pengecualian merugikan kinerja
Satu hal yang perlu diingat adalah pengecualian itu mahal dan membuat kode Anda lambat. Jika Anda memiliki metode yang membaca dari ResultSet, sering kali metode tersebut akan memunculkan SQLException tanpa berpindah ke elemen berikutnya, yang akan dieksekusi jauh lebih lambat dibandingkan kode normal yang tidak memunculkan pengecualian. Oleh karena itu, pengecualian penangkapan dan pergerakan yang tidak perlu diminimalkan, jika tidak ada alasan yang pasti. Daripada hanya melemparkan dan menangkap pengecualian, Anda mungkin mendapatkan solusi yang lebih bersih dan berperforma tinggi jika Anda dapat menggunakan variabel boolean untuk mewakili hasil eksekusi. Perbaiki sumber kesalahan dan hindari penangkapan pengecualian yang tidak perlu.
8) Hindari blok tangkapan kosong
Tidak ada yang lebih buruk daripada blok tangkapan yang kosong, karena tidak hanya menyembunyikan kesalahan dan pengecualian, tetapi juga dapat membuat objek Anda dalam keadaan tidak dapat digunakan atau kotor. Blok catch yang kosong hanya bisa menjadi tidak ada artinya jika Anda benar-benar yakin bahwa pengecualian tersebut tidak akan terus mempengaruhi status objek dengan cara apa pun, namun kesalahan pencatatan selama eksekusi program masih merupakan pilihan terbaik. Ini bukan hanya praktik terbaik Java, namun praktik paling umum untuk menulis kode penanganan pengecualian dalam pemrograman Java.
9) Gunakan pengecualian standar
Praktik terbaik kesembilan kami merekomendasikan penggunaan pengecualian Java standar dan bawaan. Menggunakan pengecualian standar alih-alih membuatnya sendiri setiap saat adalah pilihan terbaik untuk pemeliharaan dan konsistensi, sekarang dan di masa depan. Menggunakan kembali pengecualian standar membuat kode lebih mudah dibaca karena sebagian besar pengembang Java akrab dengan pengecualian standar seperti RuntimeException, IllegalStateException, IllegalArgumentException atau NullPointerException yang berasal dari JDK, dan mereka dapat mengetahui setiap pengecualian secara sekilas. pengecualian yang ditentukan dalam kode atau dokumentasi.
10) Catat pengecualian yang diberikan dengan metode apa pun
Java menyediakan kata kunci throw dan throws untuk melempar pengecualian. Gunakan @throw di javadoc untuk mencatat pengecualian apa pun yang mungkin diberikan oleh metode apa pun. Ini menjadi sangat penting jika Anda menulis API atau antarmuka publik. Pengecualian apa pun yang diberikan oleh suatu metode harus didokumentasikan sehingga Anda dapat secara tidak sadar mengingatkan siapa pun yang menggunakannya. Ini semua adalah praktik terbaik yang perlu diikuti saat menangani pengecualian dalam pemrograman Java. Beri tahu kami praktik apa saja yang perlu diikuti saat menulis kode penanganan pengecualian dalam pemrograman Java.