Exception handling dalam bahasa pemrograman java merupakan mekanisme atau prosedur yang diperlukan dalam menangani runtime error atau kondisi yang tidak terduga ketika program sedang berjalan. Pada dasarnya exception merupakan sebuah kondisi abnormal yang dimana exception ini dapat melakukan disruption pada flow dari program yang sedang berjalan, dengan adanya exception handling ini dapat menangani exception yang yang terjadi pada saat program berjalan sehingga flow dari program tetap berjalan.
Exception handling ini merupakan fasilitas yang disediakan oleh bahasa pemrograman java, yang dimana dengan adanya exception handling ini dapat memberikan kemudahan dan kefleksibilitasan kepada developer untuk menangani error yang terjadi ketika program dijalankan atau pada saat runtime. Contohnya seperti berikut:
Pada contoh diatas, terdapat sebuah exception yang tidak ditangani dengan exception handling, sehingga apabila ditemukan sebuah exception pada program, maka flow dari program akan terdisrupt dan berhenti tidak dilanjutkan. Sedangkan apabila menggunakan exception handling maka flow dari program akan terjaga karena exception sudah ditangani dengan baik oleh exception handling. Contohnya seperti berikut:
Hirarki class dari java exception ialah diawali dengan class utama yaitu class Throwable dan memiliki dua subclass yaitu exception dan Error, untuk lebih jelasnya dapat dilihat pada diagram dibawah ini:
Di dalam bahasa pemrograman java, exception handling dibagi menjadi dua bagian, yaitu:
1. Checked Exception
Checked exception merupakan exception yang menggunakan turunan dari class utama throwable kecuali RuntimeException dan Error. Misalnya menggunakan IOException, SQLException, ClassNotFoundException. Pada checked exception ini java akan melakukan pengecekan program pada saat melakukan compile.
2. Unchecked Exception
Unchecked exception merupakan exception yang menggunakan class turunan dari class RuntimeException, misalnya menggunakan ArithmeticException, NullPointerException, dll. Unchecked exception ini melakukan pengecekan program bukan pada saat compile, melainkan pada saat program sudah dijalankan atau runtime.
Ada 5 keyword yang biasanya digunakan dalam penerapan dari java exception handling, yaitu:
1. try
Sintaks try digunakan untuk menempatkan kode dari program yang ada kemungkinan untuk menimbulkan exception. try harus selalu diikuti dengan catch atau finally itu menandakan bahwa try tidak bisa untuk berdiri sendiri.
2. catch
Sintaks catch digunakan untuk melakukan handling exception yang terjadi pada blok try. Maka dari itu penggunaan dari catch harus selalu bersamaan dengan try untuk dapat menghandle exception dari try.
3. Finally
Sintaks finally digunakan untuk mengeksekusi kode yang penting dari program. Penggunaan dari finally tidak ada hubungannya dengan adanya exception atau tidak adanya exception, karena kode program yang ada di dalam finally akan selalu di eksekusi apapun yang terjadi di try dan catch.
4. Throw
Sintaks throw digunakan untuk melempar exception yang ada secara manual dari method atau blok kode ke method yang memanggilnya. Pada dasarnya throw digunakan untuk memberitahu aplikasi bahwa ada kondisi abnormal atau ada error yang terjadi di dalam program.
5. throws
Throws digunakan untuk mendeklarasikan exception yang mungkin terjadi pada suatu method kepada method yang memanggilnya. Dengan mendeklarasikan exception dengan throws, method yang memanggil harus menangani exception tersebut dengan menggunakan try-catch atau mendeklarasikan throws untuk methodnya sendiri.