Oleh : Reza Ervani
Rujukan :
بسم الله الرحمن الرحيم
Artikel kali ini membahas bagaimana menggunakan tiga komponen penanganan eksepsi, yakni try, catch dan finally – untuk menulis suatu penangan eksepsi. Akan dijelaskan pula statement try-with-resource, yang diperkenalkan di Java SE 7. Statement try-with-resource umumnya cocok untuk situasi yang menggunakan resource Closeable, seperti streams.
Secara terpisah akan dijelaskan juga di web ini secara bertahap dengan contoh dan analisa tentang apa yang muncul di berbagai skenario.
Contoh berikut mendefinisikan dan mengimplementasikan sebuah class bernama ListOfNumbers. Saat dibangun, ListOfNumbers membuat suatu ArrayList yang berisi 10 elemen integer dengan urutan nilai 0 hingga 9. Class ListOfNumbers juga mendefinisikan metode bernama writeList, yang menulis daftar angka ke dalam sebuah file teks bernama OutFile.txt. Contoh ini menggunakan class-class output yang didefinisikan di java.io yang dijelaskan di bagian terpisah.
// Note: This class won't compile by design! import java.io.*; import java.util.List; import java.util.ArrayList; public class ListOfNumbers { private List<Integer> list; private static final int SIZE = 10; public ListOfNumbers () { list = new ArrayList<Integer>(SIZE); for (int i = 0; i < SIZE; i++) { list.add(new Integer(i)); } } public void writeList() { PrintWriter out = new PrintWriter(new FileWriter("OutFile.txt")); for (int i = 0; i < SIZE; i++) { out.println("Value at: " + i + " = " + list.get(i)); } out.close(); } }
Bagian :
new FileWriter("OutFile.txt"));
Adalah sebuah panggilan ke sebuah konstruktor. Konstruktor menginisialisasi suatu stream output pada sebuah file. Jika file tersebut tidak dapat dibuka, konstruktor akan memberikan IOException.
Bagian :
list.get(i)
adalah sebuah panggilan ke metode get milik ArrayLIst, yang akan memberikan suatu IndexOutOfBoundException jika nilai dari argumen tersebut terlalu kecil (kurang dari 0) atau lebih besar (lebih dari jumlah elemen yang terkandung di ArrayList)
Jika kita mencoba mengkompail class ListOfNumbers, kompailer akan mengeluarkan pesan kesalahan tentang eksepsi yang dihasilkan oleh konstruktor FileWriter, walapun dia tidak menampilakn pesan kesalahan tentang eksepsi yang dikeluarkan oleh get. Alasannya adalah bahwa eksepsi yang dikeluarkan oleh konstruktor, IOException, adalah eksepsi yang diperiksa, sementara yang dikeluarkan oleh metode get, IndexOutOfBoundsException, adalah eksepsi yang tidak diperiksa.
Selanjutnya karena kita telah kenal dengan class ListOfNumbers diatas, dimana eksepsi dapat dikeluarkan darinya, kita akan coba menulis penangan eksespi (Exception Handler) untuk menangkap dan menangani eksepsi-eksepsi tersebut.
Bersambung insya Allah (reza@rumahilmu.or.id)
Leave a Reply