Apa itu exception handling?
Exception handling adalah proses menangani kejadian yang tidak diinginkan atau tidak terduga saat sebuah program komputer berjalan. exception handling mengelola kejadian-kejadian ini untuk mencegah program atau sistem mengalami crash. Tanpa proses ini, eksepsi dapat mengganggu operasi normal sebuah program.
Exception dapat terjadi karena berbagai alasan, termasuk masukan pengguna yang tidak valid, kesalahan dalam kode, kegagalan perangkat, kehilangan koneksi jaringan, kekurangan memori untuk menjalankan aplikasi, konflik memori dengan program lain, percobaan pembagian dengan nol, atau pengguna mencoba membuka file yang tidak tersedia.
Ketika Exception terjadi, mekanisme bahasa pemrograman khusus, perangkat keras interupsi, atau fasilitas komunikasi antarproses dalam sistem operasi menangani eksepsi tersebut.
exception handling berbeda dengan penanganan kesalahan. exception handling menangani kondisi yang dapat diatasi oleh aplikasi, sedangkan penanganan kesalahan bertujuan untuk menghindari masalah serius yang bisa mengganggu jalannya aplikasi.
Bagaimana exception handling Digunakan?
Jika sebuah program memiliki banyak pernyataan dan terjadi exception di tengah-tengah eksekusi, maka pernyataan setelah eksepsi tidak akan dijalankan dan program dapat mengalami crash. exception handling memastikan bahwa program tetap berjalan meskipun eksepsi terjadi.
exception handling dapat menangkap (catch) dan melempar (throw) exception. Jika suatu fungsi dalam blok kode mendeteksi exception tetapi tidak dapat menanganinya, eksepsi akan dilemparkan ke fungsi lain yang dapat menanganinya. Pernyataan catch adalah sekumpulan pernyataan yang menangani exception tertentu yang telah dilemparkan. Parameter catch menentukan jenis spesifik exception yang dilemparkan.
exception handling berguna untuk menangani exception yang tidak dapat ditangani secara lokal. Daripada menampilkan status kesalahan dalam program, penangan exception  mengalihkan kontrol ke tempat di mana kesalahan dapat ditangani. Sebuah fungsi dapat melempar exception atau memilih untuk menanganinya sendiri.
Kode penanganan kesalahan juga dapat dipisahkan dari kode normal dengan menggunakan blok try, yaitu bagian kode yang berada dalam kurung kurawal atau tanda kurung siku yang dapat menyebabkan exception . Blok try membantu programmer mengategorikan objek exception .

Apa saja jenis-jenis pengecualian?
Pengecualian dapat dikategorikan ke dalam dua kelas berikut:
- Pengecualian yang diperiksa (Checked exceptions). Juga disebut sebagai pengecualian waktu kompilasi (compile-time exceptions), compiler memeriksa pengecualian ini selama proses kompilasi untuk memastikan apakah pengecualian telah ditangani oleh pemrogram. Jika tidak, maka kesalahan kompilasi akan ditampilkan di sistem. Contoh pengecualian yang diperiksa meliputi SQLException dan ClassNotFoundException.
- Pengecualian yang tidak diperiksa (Unchecked exceptions). Juga disebut sebagai pengecualian waktu eksekusi (runtime exceptions), pengecualian ini terjadi selama eksekusi program. Pengecualian ini tidak diperiksa pada saat kompilasi, sehingga pemrogram bertanggung jawab untuk menanganinya. Pengecualian yang tidak diperiksa tidak menyebabkan kesalahan kompilasi. Contoh pengecualian yang tidak diperiksa meliputi NullPointerException dan IllegalArgumentException.
Penanganan pengecualian di Java vs. penanganan pengecualian di C++
Meskipun blok try, throw, dan catch sama dalam bahasa pemrograman Java dan C++, ada beberapa perbedaan mendasar dalam setiap bahasa.
Sebagai contoh, penanganan pengecualian di C++ memiliki blok catch all, yang dapat menangkap berbagai jenis pengecualian, tetapi Java tidak memilikinya. Demikian pula, C++ dapat melemparkan tipe data primitif dan pointer sebagai pengecualian, tetapi Java hanya dapat melemparkan objek sebagai pengecualian.
Berbeda dengan C++, Java memiliki pengecualian yang diperiksa dan tidak diperiksa. Java juga memiliki klausa finally, yang dieksekusi setelah blok try-catch untuk keperluan pembersihan. C++ tidak memiliki blok finally. Namun, metode finalize akan dihapus dalam versi Java mendatang, yang berarti pengguna harus menemukan metode lain untuk menangani kesalahan Java dan proses pembersihan.
Contoh penanganan pengecualian
Berikut adalah beberapa contoh pengecualian:
- SQLException adalah pengecualian yang diperiksa yang terjadi saat mengeksekusi kueri pada database dengan sintaks Structured Query Language (SQL) yang salah.
- ClassNotFoundException adalah pengecualian yang diperiksa yang terjadi ketika kelas yang diperlukan tidak ditemukan—baik karena kesalahan command-line, berkas CLASS yang hilang, atau masalah dengan classpath.
- IllegalStateException adalah pengecualian yang tidak diperiksa yang terjadi ketika keadaan suatu lingkungan tidak sesuai dengan operasi yang sedang dieksekusi.
- IllegalArgumentException adalah pengecualian yang tidak diperiksa yang terjadi ketika argumen yang salah diberikan ke suatu metode.
- NullPointerException adalah pengecualian yang tidak diperiksa yang terjadi ketika pengguna mencoba mengakses objek menggunakan variabel referensi yang bernilai null atau kosong.
Dalam contoh ini, sebuah variabel dibiarkan tidak terdefinisi, sehingga console.log
menghasilkan pengecualian. Blok try digunakan untuk menampung kode yang mungkin mengalami pengecualian agar aplikasi tidak mengalami crash. Jika kode berjalan tanpa masalah, maka blok catch akan dilewati. Namun, jika terjadi pengecualian, maka kesalahan akan ditangkap, dan blok catch akan dieksekusi.
Pelajari lebih lanjut tentang praktik terbaik dalam penanganan pengecualian untuk desain kode yang aman, termasuk proses melempar dan menangani berbagai jenis pengecualian.