Penjebakan Eksepsi. Nur hasanah, M.Cs

dokumen-dokumen yang mirip
//PROGRAM 9-8. int[] A = new int[5]; // SALAH, karena tidak terdapat. class BanyakEksepsi { indeks ke-5. public static void test(int a, int b) { try {

MODUL 9 EXCEPTION HANDLING

PRAKTIKUM 17 MENANGANI EXCEPTION

03/04/2018. Pemrograman Berorientasi Object

Modul 4 Exception, I/O, dan Operasi File

Tujuan Intruksional. Mampu menjelaskan tentang event handling Mampu menjelaskan tentang method Mampu menggunakan event handling Mampu membuat method

PRAKTIKUM 6 EXCEPTION

Pemrograman Berorientasi Object

PERCOBAAN 6 EXCEPTION

Percobaan 6 Exception

Sesi 8. Event Handling & Exception Handling. Tujuan Intruksional

PERTEMUAN III OBJEK DAN CLASS TUJUAN PRAKTIKUM

EXCEPTION HANDLING. Bug : kesalahan yang merupakan kelemahan dari perancangan atau implementasi

Definisi Eksepsi (exception)

A. TUJUAN PEMBELAJARAN 1. Mengetahui cara menangani exception dengan cara melempar exception. 2. Mengetahui cara membuat sendiri class exception.

Exception. Oleh: Mike Yuliana PENS-ITS

PEMROGRAMAN JAVA : EXCEPTION

Topik. Penanganan Eksepsi. Menangkap Eksepsi. Catch Secara bertingkat. Melontarkan Eksepsi. Melontarkan kembali Eksepsi.

MODUL 7 - EXCEPTION HANDLING

IKG2I4 / Software Project I

PERTEMUAN 3 OBJEK DAN CLASS

Paket dan Interface. 15 th week Estu Sinduningrum ST,MT

PEMOGRAMAN JAVA. Yoannita. Tipe Data (ii) : Array Exception Handling

PRAKTIKUM I EXCEPTION HANDLING

public class Test { int i = 6; int j = 3; System.out.println(i/j); } Output :

Praktikum 9 Exception Handling

Pemrograman Berorientasi Obyek. Exception Handling. Politeknik Elektronika Negeri Surabaya

Exception Handling. Topik

Exception adalah penanda bahwa kondisi/kejadian yang tidak diinginkan telah terjadi pada program kita. Ada 2 jenis exception (+1 Error):

IF PEMROGRAMAN LANJUT EXCEPTION. Oleh : Andri Heryandi, M.T.

Penanganan Kesalahan

Pemograman Java. Yoannita, S.Kom. Argumen Command Line Exception Handling Package

Exception Handling. Oleh : Agus Priyanto, M.Kom

Praktikum Exception Handling

Pemrograman Berbasis Objek. Exception Handling. Politeknik Elektronika Negeri Surabaya

1. Mana diantara pilihan-pilihan berikut ini yang merupakan penulisan loop yang benar?

2. Pilih instruksi yang dapat digunakan dalam method actionperformed untuk membedakan antara tombol buttonone dan buttontwo.

BAB II VARIABEL DAN TIPE DATA

2 TIPE DATA DAN VARIABEL

BAB Tujuan. 2.2 Apa itu Exception? Pendahuluan Error dan Exception Classes

Pewarisan Sifat Objek. Nur Hasanah, M.Cs

Abstract Class dan Interface. Viska Mutiawani, M.Sc

BAB VI ARRAY Mendeklarasikan Variabel Array int[ ] bilangan; int bilangan[ ]; Mendefinisikan Array Bilangan = new int[5]; Latihan 21. ArrSatu.

Konsep Lanjut Pemrograman Objek

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA LAB SHEET PEMROGRAMAN 2

Percabangan & Perulangan

Pemrograman Lanjut Exception Handling PTIIK

Tidak ada satupun dari pilihan di atas yang benar karena checked exception tidak bisa ditulis

EXCEPTION. 2. Pada kondisi bagaimana klausa finally tidak akan dieksekusi? Kode didalam block try memiliki statement return

Algoritma Pemrograman 1

PRAKTIKUM PEMROGRAMAN OBJEK DENGAN JAVA MODUL KE-5 EXCEPTION HANDLING

PEMAHAMAN DASAR DASAR JAVA

PEMROGRAMAN JAVA : VARIABEL DAN TIPE DATA

4/11/2013. Topik. Exceptions dan Assertions Pengenalan Pemrograman 2. Topik. Topik EXCEPTIONS. Class Error dan Exception

Pemrograman Berorientasi Objek / Object Oriented Programming / (OOP) Nur Hasanah, M.Cs

//PROGRAM class ContohDoWhile { public static void main(string[] args) { int i=6; do { System.out.println("Saya sedang belajar Java"); i++;

Variabel tersebut seharusnya bisa dideklarasikan didalam try block dan block catch

Waktu Sisa : 0:43:4. Sukses. Kesalahan pada URL. File tidak lengkap. Kesalahan umum. Mengerjakan finally. Diluar block

Elemen Dasar Dalam Bahasa Java

1. Apa yang harus dilakukan oleh programmer untuk menangani user-defined exception? Menuliskan exception sebagai start method

Sukses. Kesalahan pada URL. File tidak lengkap. Kesalahan umum

1.Tujuan. 2. Latar Belakang

PRAKTIKUM 3 KONSTRUKTOR DAN OVERLOADING

Exception Handling. Prepared by Viska Mutiawani. 1

Obyektif : KONTROL ALUR PROGRAM

Cara Membaca File Text di JAVA

PEMROGRAMAN JAVA. Yoannita, S.Kom. Input Kondisi (IF-ELSE, SWITCH)

SEKOLAH TINGGI MANAJEMEN INFORMATIKA & KOMPUTER JAKARTA STI&K SATUAN ACARA PERKULIAHAN

Menangkap Kesalahan (Error Handling)

SUMBER BELAJAR PENUNJANG PLPG

Percabangan & Perulangan

Pemrograman Berorientasi. Exception Handling

Input Nilai tanpa Case String di Java

if (ekspresi_boolean) { Pernyataan1; } else { Pernyataan2; }

BAB 3 TYPE DATA, VARIABLE DAN OPERATOR

BAHASA PEMROGRAMAN JAVA

PEMROGRAMAN JAVA. Petunjuk Penulisan Program Token Aturan Penamaan Identifier Lingkungan /Scope dari variabel Tipe Data (i) Yoannita

Praktikum KPLBO Class dan Object I

Thread. 16 th week Estu Sinduningrum ST,MT

Exception Handling Lanjutan

PEMBAHASAN UJIAN TENGAH SEMESTER PEMROGRAMAN BERBASIS OBYEK Dosen : Tim Dosen PBO

MATERI PRAKTIKUM 2 ARRAY

MODUL PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK

BAB VII. CLASS DAN OBJECT

Array. Pengantar. int a, b, c, d, e;

LAB PEMROGRAMAN I (JAVA FUNDAMENTAL) PERTEMUAN 3 Dosen : Bella Hardiyana S. Kom

Modul Praktikum 4 Pemograman Berorientasi Objek

Pemrograman. Pertemuan-3 Fery Updi,M.Kom

if (ekspresi_boolean) {

Dasar-Dasar OOP di Java

Pertemuan 2 (2) : Membuat Class dan mengakses Anggota Class

PEMROGRAMAN JAVA : ARRAY

OPERASI FILE & EXCEPTION HANDLING. Herman Tolle

MEMBUAT KELAS SENDIRI. Dewi Sartika, M.Kom

Bahasa Pemrograman 2.

Pertemuan 2 Struktur Kontrol Percabangan

Pemrograman Berorientasi Objek INHERITANCE

Paket dan Interface. 15 th week Estu Sinduningrum ST,MT

MODUL III ARRAYLIST TUGAS PENDAHULUAN

Identifier, Keywords, Variabel, Tipe Data Primitif dan Operator PBO. Ramos Somya

Transkripsi:

Penjebakan Eksepsi Nur hasanah, M.Cs

Pendahuluan Dalam Java, runtime error (kesalahan-kesalahan yang terjadi pada saat program sedang berjalan) disebut eksepsi. Terdapat 5 buah kata kunci : try,catch, throw,throws dan finally. Kata kuci try digunakan untuk membuat blok berisi statemen-statemen yang mungkin menimbulkan eksepsi. Apabila dalam proses eksekusi runtunan statemen tsb terjadi sebuah eksepsi, maka eksepsi akan dilempar ke bagian blok penangkap yang dibuat dengan kata kunci catch. 2

Pada kasus-kasus tertentu, terkadang kita juga ingin melempar eksepsi secara manual. Untuk melakukan hal tersebut, maka gunakan kata kunci throw. Apabila kita ingin membangkitkan sebuah eksepsi tanpa menuliskan blok try, maka kita perlu menambahkan kata kunci throws pada saat pendeklarasian method. Dalam mendefinisikan blok try, kita juga diizinkan untuk menulis statemen tambahan, yaitu kata kunci finally. Statemen finally pasti akan dieksekusi baik terjadi eksepsi atau tidak. 3

Bentuk umum penanganan eksepsi: //kumpulan statemen yang mungkin menimbulkan eksepsi catch(tipeeksepsi1 objekeksepsi1) { //penanganan untuk tipe eksepsi1 catch (TipeEksepsi2 objekeksepsi2) { //penanganan untuk tipe eksepsi2 finally { //statemen tambahan yang pasti akan dieksekusi 4

TipeEksepsi direpresentasikan dengan sebuah kelas, misalnya : NullPointerException, ArithmeticException, ArrayIndexOutOfBoundsException, dsb. 5

Contoh class ContohEksepsi1 { public static void main(string[] args) { int[] A = new int[5]; A[5] = 100;// SALAH, karena tidak terdapat indeks ke-5 class ContohEksepsi2 { public static void main(string[] args) { int pembilang = 2; int penyebut = 0; int hasil = pembilang/penyebut; // SALAH System.out.println("Hasil = " + hasil); Kedua contoh di atas menunjukkan terjadinya eksepsi dan maka program dihentikan secara tidak normal 6

Menggunakan kata kunci try dan catch class ContohEksepsi3 { public static void main(string[] args) { int pembilang = 2; int penyebut = 0; int hasil = pembilang/penyebut; // menimbulkan eksepsi System.out.println("Hasil = " + hasil); //tdk dieksekusi catch (ArithmeticException ae) { System.out.println("KESALAHAN: " + "Terdapat pembagian dengan nol"); System.out.println("Statemen setelah blok try-catch"); Meskipun ada kesalahan, tetapi program tidak dihentikan secara tiba2, karena diatasi blok try-catch. 7

Menggunakan kata kunci try dan catch Apabila kita tidak mengetahui kemungkinan kesalahan yang akan timbul, maka dapat menggunakan tipe Exception sebagai parameternya. class ContohEksepsi4 { public static void main(string[] args) { int pembilang = 2; int penyebut = 0; int hasil = pembilang/penyebut; // SALAH System.out.println("Hasil = " + hasil); //tdk dieksekusi catch (Exception e) { System.out.println("KESALAHAN: " + "Terdapat pembagian dengan nol"); System.out.println("Statemen setelah blok try-catch"); 8

Menggunakan kata kunci try dan catch Pada kasus-kasus tertentu, mungkin kita ingin menampilkan pesan sebenarnya yang terkandung dalam eksepsi yang ditimbulkan. Kita dapat menggunakan method getmessage() class ContohEksepsi5 { public static void main(string[] args) { int pembilang = 2; int penyebut = 0; int hasil = pembilang/penyebut; // SALAH System.out.println("Hasil = " + hasil);// tdk dieksekusi catch (Exception e) { System.out.println(e.getMessage()); System.out.println("Statemen setelah blok try-catch"); 9

Menggunakan kata kunci try dan catch Apabila kita ingin mengeluarkan informasi stack trace, gunakan method printstacktrace(). class ContohEksepsi6 { public static void main(string[] args) { int pembilang = 2; int penyebut = 0; int hasil = pembilang/penyebut; // SALAH System.out.println("Hasil = " + hasil); //tdk dieksekusi catch (Exception e) { e.printstacktrace(); // mencetak stack trace System.out.println("Statemen setelah blok try-catch"); 10

Menggunakan kata kunci try dan catch Contoh program yang mengatasi kesalahan dalam pengaksesan indeks array class EksepsiIndeksArray { public static void main(string[] args) { int[] A = new int[5]; // mengisi elemen array for (int i=0; i<5; i++) { A[i] = i * 10; // akan menimbulkan eksepsi (mengakses indeks array ke-9) System.out.println("Nilai pada indeks ke-9 : " + A[9]); catch (ArrayIndexOutOfBoundsException e) { System.out.println("Tidak terdapat indeks ke-" + e.getmessage()); // menampilkan elemen array for (int i=0; i<5; i++) { System.out.println("Elemen ke-" + i + " : " + A[i]); 11

Penjebakan Beberapa Tipe Eksepsi Pada saat terjadi eksepsi dg tipe tertentu dalam blok try, maka program akan mencari statemen catch yang sesuai dengan tipe eksepsi yang dibangkitkan. class BanyakEksepsi { public static void test(int a, int b) { int c = a / b; System.out.println("Hasil bagi: " + c); int[] Arr = {1,2,3,4,5; // array dengan 5 elemen Arr[10] = 11; // mengakses indeks ke-10 catch (ArithmeticException ae) { System.out.println("Terdapat pembagian dengan 0"); System.out.println(ae); catch (ArrayIndexOutOfBoundsException oobe) { System.out.println("Indeks di luar rentang"); System.out.println(oobe); public static void main(string[] args) { test(4, 0); // menimbulkan ArithmeticException System.out.println(); test(12, 4); // menimbulkan ArrayIndexOutOfBoundsException 12

Penjebakan Beberapa Tipe Eksepsi Urutan tipe eksepsi harus diperhatikan Kelas eksepsi turunan harus ditempatkan lebih awal dibandingkan dengan kelas induknya. class UrutanCatch3 { public static void main(string[] args) { int bilangan = 12; int pembagi = 4; int hasil = bilangan / pembagi; System.out.println("Hasil : " + hasil); int[] Arr = {1,2,3,4,5; Arr[10] = 11; catch (ArithmeticException ae) { System.out.println("Terjadi pembagian dengan 0"); catch (Exception e) { System.out.println("Eksepsi generik dieksekusi"); 13

Menggunakan kata kunci throw Jika kita ingin membangkitkan eksepsi secara manual, kita gunakan kata kunci throw. Bentuk umum: throw eksepsi; 14

class Barang { private String kode; private String nama; private double harga; public void setkode(string vkode) { kode = vkode; if (kode == null) { throw new NullPointerException(); catch (NullPointerException npe) { System.out.println("KESALAHAN: " + "Kode barang tidak boleh null"); public String getkode() { return kode; public void setnama(string vnama) { nama = vnama; if (nama == null) { throw new NullPointerException(); catch (NullPointerException npe) { System.out.println("KESALAHAN: " + "Nama barang tidak boleh null"); public String getnama() { return nama; public void setharga(int vharga) { harga = vharga; public double getharga() { return harga; class DemoThrow { public static void main(string[] args) { Barang obj = new Barang(); obj.setkode(null); obj.setnama("buku tulis"); obj.setharga(2500); System.out.println("\nKode : " + obj.getkode()); System.out.println("Nama : " + obj.getnama()); System.out.println("Harga : " + obj.getharga()); 15

Menggunakan kata kunci throw Pada Java, eksepsi hanya memililki 2 tipe constructor yaitu: Contructor tanpa parameter Contructor yang memiliki 1 parameter bertipe String. Pada contoh sebelumnya, kita hanya menggunakan contructor bentuk yg pertama. Sedangkan contructor bentuk yg kedua, terlihat pada contoh berikutnya 16

class Barang { private String kode; private String nama; private double harga; public void setkode(string vkode) { kode = vkode; if (kode == null) { throw new NullPointerException("KESALAHAN: " + "Kode barang tidak boleh null"); catch (NullPointerException npe) { System.out.println(e.getMessage); public String getnama() { return nama; public void setharga(int vharga) { harga = vharga; public double getharga() { return harga; public String getkode() { return kode; public void setnama(string vnama) { nama = vnama; if (nama == null) { throw new NullPointerException("KESALAHAN: " + "Nama barang tidak boleh null"); catch (NullPointerException npe) { System.out.println(npe.getMessage); 17

Menggunakan kata kunci throws Apabila kita tidak mnyertakan blok try-catch di dlm method, maka kita harus menyertakan klausa throws pada saat pendeklarasian method bersangkutan. Jika tidak, maka program tidak dapat dikompilasi. Cara ini juga dapat digunakan untuk beberapa tipe eksepsi. Bentuk umum: tipe nama-method(daftar-parameter) throws tipeeksepsi1, tipe-eksepsi2, { //badan method 18

Menggunakan kata kunci throws class DemoThrows { public static void test() throws IllegalAccessException { throw new IllegalAccessException( "KESALAHAN: illegal access"); public static void main(string[] args) { test(); catch (Exception e) { System.out.println("Eksepsi ditangkap di sini..."); System.out.println(e.getMessage()); System.out.println("Statemen setelah blok try-catch"); 19

Menggunakan kata kunci throws Kata kunci throws juga dapat digunakan untuk menangkap beberapa tipe eksepsi. Pemisahan antar-tipe eksepsi dilakukan dengan menggunakan tanda koma. Perhatikan contoh selanjutnya. 20

Menggunakan kata kunci throws class DemoThrows2 { public static void test(int n) throws NullPointerException, ArithmeticException { if (n < 0) { throw new NullPointerException( "KESALAHAN: null pointer"); else { throw new ArithmeticException( "KESALAHAN: arithmetic exception"); public static void main(string[] args) { //test(-12); // menimbulkan eksepsi NullPointerException test(0); // menimbulkan eksepsi ArithmeticException catch (Exception e) { System.out.println("Eksepsi ditangkap di sini..."); System.out.println(e.getMessage()); System.out.println("Statemen setelah blok try-catch"); 21

Menggunakan kata kunci finally Blok finalisasi digunakan pada saat kita ingin menempatkan kode yang pasti akan dieksekusi, baik terjadi eksepsi atau tidak. Blok finalisasi dibuat dengan menggunakan kata kunci finally Bentuk umum: // statemen yang mungkin menimbulkan eksepsi A, B dan C catch (A ea) { // blok penangkap untuk eksepsi A catch (B eb) { // blok penangkap untuk eksepsi B catch (C eb) { // blok penangkap untuk eksepsi C finally { // statemen yang pasti akan dieksekusi, baik terjadi eksepsi maupun tidak 22

Menggunakan kata kunci finally class DemoFinally { private static int i = 0; public static void main(string[] args) { while (true) { System.out.print("Pada saat i = " + i + ": "); if (i++ == 0) { throw new Exception(); // melempar eksepsi System.out.println("Tidak terjadi eksepsi"); catch (Exception e) { System.out.println("Terdapat eksepsi"); finally { System.out.println("Statemen dalam blok finally\n"); if (i == 2) { break; // pada saat i==2, pengulangan akan berhenti 23

Reference Budi Rahardjo dkk. (2012). Mudah Belajar Java. Penerbit Informatika Bandung. 24