Dasar Java : Exception – Blok Catch

Oleh : Reza Ervani

Rujukan :

  1. http://docs.oracle.com/javase/tutorial/essential/exceptions/catch.html

بسم الله الرحمن الرحيم

Kita menghubungkan exception handler dengan blok try dengan menyediakan satu atau lebih blok  catch secara langsung setelah blok try . Tidak boleh ada kode antara akhir blok try block dan awal blok  catch – tampak seperti berikut ini :


try {

} catch (ExceptionType name) {

} catch (ExceptionType name) {

}

Setiap blok catch adalah exception handler dan menangani tipe eksepsi yang diindikasikan oleh argumennya. Tipe argumen, ExceptionType, mendeklarasikan tipe eksepsi yang dapat ditangani handler dan mestilah nama dari sebuah class yang merupakan turunan dari class Throwable. Handler dapat merujuk ke eksepsi dengan  name.

Blok catch berisi kode yang dieksekusi jika exception handler dibangkitkan. Sistem runtime membangkitkan exception handler bila handler adalah yang pertama kali ada di dalam call stack dimana  ExceptionType cocok dengan tipe exception yang diberikan. Sistem menganggap cocok jika objek yang diberikan dapat secara legal diberikan ke argumen exception handler.

Berikut adalah dua exceptipn handler untuk metode writeList  — satu untuk dua tipe exception terperiksa yang dapat diberikan didalam statement try :


try {

} catch (FileNotFoundException e) {
    System.err.println("FileNotFoundException: " + e.getMessage());
    throw new SampleException(e);

} catch (IOException e) {
    System.err.println("Caught IOException: " + e.getMessage());
}

Kedua handler tersebut mengeluarkan pesan kesalahan. Handler kedua tidak melakukan apa-apa lagi. Dengan menangkap setiap  IOException yang tidak ditangkap oleh handler pertama, dia memperkenankan program untuk tetap dieksekusi.

Handler pertama, sebagai tambahan untuk mengeluarkan pesan, memberikan suatu user-defined exception. (Memberikan eksepsi dibahas lebih lanjut dalam bagian “Bagaimana Memberikan Eksepsi”)

Dalam contoh tersebut, ketika  FileNotFoundException diterima menyebabkan sebuah user-defined exception yang disebut SampleException diberikan. Kita mungkin ingin melakukan hal ini jka kita ingin program kita untuk menangani sebuah eksepsi dengan cara yang khusus.

Exception handler dapat melakukan lebih dari sekedar menampilkan pesan kesalahan atau menghentikan program. Mereka dapat melakukan perbaikan kesalahan, memberikan prompt kepada pengguna untuk memberikan keputusan atau meneruskan error ke handler yang lebih tinggi menggunakan chained exception, yang akan dibahas nanti dalam bagian Chained Exception

Menangkap Lebih dari Satu Tipe Exception dengan Satu Exception Handler

Pada Java SE 7 dan berikutnya, sebuah blok  catch dapat menangani lebih dari satu tipe eksepsi. Fitur ini dapat mengurangi duplikasi kode dan kecenderungan membuat eksepsi menjadi lebih luas.

Pada klausa catch spesifikasikan tipe-tipe eksepsi yang dapat ditangani oleh blok, dan pisahkan tiap eksepsi dengan suatu garis vertikal  (|):


catch (IOException|SQLException ex) {
    logger.log(ex);
    throw ex;
}

Catatan : Jika sebuah blok catch menangani lebih dari satu tipe eksepsi, maka kemudian parameter catch secara implist adalah  final. Pada contoh ini parameter  catch yakni ex adalah final sehingga kita tidak dapat menambahkan nilai apapun didalam blok catch.

About Reza Ervani 426 Articles
Adalah pendiri programming.rezaervani.com -

Be the first to comment

Leave a Reply

Your email address will not be published.


*


This site uses Akismet to reduce spam. Learn how your comment data is processed.