LAPORAN PEMROGRAMAN BERORIENTASI OBJEK MODUL 6 EXCEPTION HANDLING
OLEH :
NAMA
: DEVI ARI LUTFIANTO
NIM
: 201310370311152 201310370311152
JURUSAN TEKNIK INFORMATIKA I NFORMATIKA FAKULTAS TEKNIK UNIVERSITAS MUHAMMADIYAH MALANG 2014
I.
DASAR TEORI
Exception adalah event, yang terjadi ketika program dieksekusi, yang ngakibatkan terganggunya alur program secara normal. - Checked exceptions: merupakan exception yang disebabkan oleh kesalahan pemakai program atau hal lain yang dapat diprediksi oleh pemrogram. Contohnya, jika ingin membuka file tapi file tidak ditemukan, maka exception akan muncul. - Runtime exception: ini adalah exception yang muncul dimana kemunculannya tidak bisa dihindari oleh pemrogram. - Errors: Ini sebenarnya bukan exception, namun merupakan masalah yang muncul diluar kendali pemakai dan pemrogram. Error secara umum akan dibiarkan saja, sebab tidak ada yang bisa dilakukan untuk mengatasinya. Sebagai contoh, jika stack overflow muncul, maka error akan muncul. Menangkap Exception: Method menangkap exception menggunakan kombinasi try dan catch ke ywords. Kode program yang dapat menimbulkan exception diletakkan di dalam blok try . Sintaks penggunaan try-catch adalah sebagaimana berikut:
try { //Protected code }catch(ExceptionName e1) { //Blok Catch } Statement catch disertai dengan deklarasi tipe exception yang ingin ditangani. Jika exception terjadi di bagian protected code, maka blok catch akan melakukan pemeriksaan. Jika tipe exceptionnya ada di dalam blok catch, maka exception yang bersangkutan akan ditangani
II.
TUGAS PRAKTIKUM
1. Buatlah program untuk memasukkan data buku melalui class KelolaBuku (menggunakan enkapsulasi) dan kemudian diambil dan disimpan ke String Infobuku kemudian di tampilkan datanya 2. Beri Exception Handling untuk semua kemungkinan error yang muncul, contoh jika jumlah_hal memakai tipe data int, lalu kita salah input karakter huruf 3. Gunakan perulangan tanpa batas untuk input data tersebut, akan berhenti ketika user menghendaki, atau inputan melebihi batas array III.
HASIL PRAKTIKUM 1. Aplikasi Penghitung Tabung
Source code /* KelolaBuku.java */
package hemat; public class KelolaBuku { private String type_buku; private String judul_buku; private int jumlah_hal; public String getType_buku() { return type_buku; } public void setType_buku(String type_buku) { this.type_buku = type_buku; } public String getJudul_buku() { return judul_buku; } public void setJudul_buku(String judul_buku) { this.judul_buku = judul_buku; } public int getJumlah_hal() { return jumlah_hal; } public void setJumlah_hal(int jumlah_hal) { this.jumlah_hal = jumlah_hal; } }
/* DaftarBuku.java */
package hemat; import import import import
java.io.BufferedReader; java.io.IOException; java.io.InputStreamReader; java.util.Scanner;
public class DaftarBuku{ static String Infobuku[] = new String[5]; static String type_bukuTmp; static String judul_bukuTmp; static int jumlah_halTmp; static int jml; static String pilihan; public static void main(String[] args) { KelolaBuku buku[] = new KelolaBuku[5]; buku[0] = new KelolaBuku(); buku[1] = new KelolaBuku(); buku[2] = new KelolaBuku(); buku[3] = new KelolaBuku(); buku[4] = new KelolaBuku(); boolean running = true; BufferedReader data = new BufferedReader (new InputStreamReader (System.in)); while (running) { int pilih = 0; System.out.println("Pilihan : "); System.out.println("1. Masukkan Data Buku"); System.out.println("2. Lihat Data Buku"); System.out.println("3. Exit"); System.out.print("Pilihan anda = "); try { pilih = Integer.parseInt(data.readLine()); } catch (IOException | NumberFormatException e ) { System.err.println("Maaf, data yang anda inputkan salah!"); System.err.println(e); } switch (pilih) { case 1: System.out.println("Masukkan jumlah data yang akan diinputkan !"); System.out.print("Jumlah data = "); try { jml = Integer.parseInt(data.readLine()); } catch (IOException | NumberFormatException e ) { System.err.println("Maaf, data yang anda inputkan salah!"); System.err.println(e); } while (running) {
for (int i = 0; i < jml; ) { try { System.out.println("Data ke-" + (i+1)); System.out.print("Masukkan tipe buku : "); type_bukuTmp = data.readLine(); buku[i].setType_buku(type_bukuTmp); System.out.print("Masukkan judul buku : "); judul_bukuTmp = data.readLine(); buku[i].setJudul_buku(judul_bukuTmp); System.out.print("Masukkan jumlah halaman : "); jumlah_halTmp =Integer.parseInt(data.readLine()); buku[i].setJumlah_hal(jumlah_halTmp); Infobuku[i] = (i+1) + ".\nTipe Buku = " + buku[i].getType_buku() + "\nJudul Buku = " + buku[i].getJudul_buku() + "\nJumlah Halaman = " + buku[i].getJumlah_hal() + "\n"; i++; System.out.println(""); } catch (IOException | NumberFormatException e ) { System.err.println("Maaf, data yang anda inputkan salah!"); } catch(ArrayIndexOutOfBoundsException e) { System.err.println("Maaf, index array sudah habis!"); System.out.print("Ingin mencoba lagi? Y/N : "); try { pilihan = data.readLine(); } catch (IOException a) { System.err.println("Maaf, data yang anda inputkan salah!"); System.err.println(a); } if(pilihan.equalsIgnoreCase("N")) { break; } } } running = false; } break; case 2: System.out.println("Data yang telah dimasukkan : "); if (Infobuku[0] != null) { try {
for (int i = 0; i < jml; i++) { System.out.println(Infobuku[i]); } } catch (ArrayIndexOutOfBoundsException e ) { System.err.println("Maaf, data yang anda inputkan salah!"); } } else System.err.println("Maaf, Data masih kosong"); System.out.println(""); break; case 3: System.exit(0); break; default: System.err.println("Maaf, menu yang anda pilih tidak valid!"); } running = true; } } }
Print Screen Program
Gambar 1. Memasukkan data berupa String ke variabel type int
Gambar 2. Memasukkan data melebihi batas array
Gambar 3. Menu lihat data buku
IV.
KESIMPULAN
Exception Handling adalah event yang terjadi ketika program menemui kesalahan pada saat instruksi program dijalankan. Exception terdiri dari dua macam kelompok,yaitu: a. Exception yang merupakan subclass RunTimeException b. Exception yang bukan merupakan subclass RunTimeException RunTimeException adalah exception yang disebabkan kesalahan program atau desain Keyword penting dalam Exception Handling adalah: a. Try b. Catch c. Finally d. Throw e. Throws Keuntungan Menggunakan Exception : a. Memisahkan kode Error-Handling dari kode utama b. Propagasi errors berdasarkan Call Stack c. Pengelompokan dan pembedaan type error NumberFormatException merupakan exception yang menangani error karena kesalahan input selain angka ArrayIndexOutOfBoundsException merupakan exception yang menangani error karena memasukkan data ke dalam array yang tidak terdefinisi atau juga memasukkan data melebihi batas array yang sudah ditentukan Dengan memakai try catch kita bisa menemukan error tanpa harus program itu exit dengan sendirinya, sangat berguna untuk membangun program yang besar da complex seperti tugas besar dari Pak Galih.