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

dokumen-dokumen yang mirip
Paket dan Interface. 15 th week Estu Sinduningrum ST,MT

PAKET DAN INTERFACE MUH. IZZUDDIN MAHALI, M.CS. PT. Elektronika FT UNY

Paket dan Interface. Nur Hasanah, M.Cs

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

Tujuan. Pengertian Interface Mendeklarasikan Interface Pewarisan Interface Menggunakan Interface

Penjebakan Eksepsi. Nur hasanah, M.Cs

Percobaan 6 Exception

PERCOBAAN 6 EXCEPTION

PRAKTIKUM 6 EXCEPTION

PERTEMUAN III OBJEK DAN CLASS TUJUAN PRAKTIKUM

Modul 4 Exception, I/O, dan Operasi File

Pemrograman Berorientasi Object

PERTEMUAN 3 OBJEK DAN CLASS

IKG2I4 / Software Project I

Exception Handling. Oleh : Agus Priyanto, M.Kom

PRAKTIKUM 17 MENANGANI EXCEPTION

03/04/2018. Pemrograman Berorientasi Object

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

TPI4202 e-tp.ub.ac.id. Lecture 4 Mas ud Effendi

Variabel tersebut seharusnya bisa dideklarasikan didalam try block dan block catch

MODUL 9 EXCEPTION HANDLING

Definisi Eksepsi (exception)

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

Praktikum 9 Exception Handling

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

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

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

Exception. Oleh: Mike Yuliana PENS-ITS

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

Sesi 8. Event Handling & Exception Handling. Tujuan Intruksional

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

PEMAHAMAN DASAR DASAR JAVA

Modul Praktikum Pemrograman

Pemrograman Berorientasi. Exception Handling

BAB II VARIABEL DAN TIPE DATA

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

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

PEMROGRAMAN JAVA : EXCEPTION

//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 {

PRAKTIKUM 7 DASAR INPUT OUTPUT

Exception Handling and Multithreading

SUMBER BELAJAR PENUNJANG PLPG

2 TIPE DATA DAN VARIABEL

Struktur Kontrol Pemrograman Java : PERCABANGAN

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

Pemrograman Lanjut Exception Handling PTIIK

Pertemuan 4 Array pada Java

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

PEMROGRAMAN BERORIENTASI OBJEK

BAHASA PEMROGRAMAN JAVA

Bahasa Pemrograman 2.

Pemrograman Berorientasi Obyek. Exception Handling. Politeknik Elektronika Negeri Surabaya

PRAKTIKUM I EXCEPTION HANDLING

MODUL 7 - EXCEPTION HANDLING

1. Manakah jawaban yang benar,pada saat Anda mengcompile dan menjalankan class berikut ini:

BAB 3 TYPE DATA, VARIABLE DAN OPERATOR

Penanganan Kesalahan

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

PRAKTIKUM PEMROGRAMAN OBJEK DENGAN JAVA MODUL KE-5 EXCEPTION HANDLING

Elemen Dasar Dalam Bahasa Java

PEMROGRAMAN JAVA : VARIABEL DAN TIPE DATA

Pemrograman Berbasis Objek. Exception Handling. Politeknik Elektronika Negeri Surabaya

Apa yang menjadi output potongan kode diatas? Error karena tidak ada String yang di-passing kedalam konstruktor Bapak

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

EXCEPTION HANDLING. 1. Mampu menangani eksepsi 2. Mengetahui dan memahami tentang multithreading 3. Dapat membuat program tentang exception handling

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

Exception Handling. Topik

BAB 5 Mendapatkan Input dari Keyboard

Obyektif : KONTROL ALUR PROGRAM

Cara Membaca File Text di JAVA

BAB 2 INPUT DARI KEYBOARD

BAB 4 ARRAY. number1 = 10; number2 = 20; number3 = 30;

Membuat dan Menggunakan Class

LAPORAN RESMI INHERITANCE

Pertemuan 2 Struktur Kontrol Percabangan

Mukhlidi Muskhir Modul 2

Pemrograman Berorientasi. Class dan Obyek 2

PENYELEKSIAN /PERCABANGAN & PERULANGAN Part II. 5 th week Estu Sinduningrum ST,MT

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

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

PEMROGRAMAN BERORIENTASI OBJEK

IKG2I4 / Software Project I

Pemrograman Berorientasi Objek (PBO) By : Jeffry Montolalu, ST PERTEMUAN XII KELAS DAN OBYEK

CHAPTER #5 DEBUGGING AND EXCEPTION HANDLING

Abstract Class dan Interface. Viska Mutiawani, M.Sc

1. Keyword mana yang memiliki fungsi sama dengan keyword this dan menyediakan reference ke atribut turunan dari objek? super

Exception Handling. Prepared by Viska Mutiawani. 1

Pengenalan JavaScript

IT652 Pemrograman Berorientasi Aspek. Ramos Somya

BAB 5 Mendapatkan Input dari Keyboard

Thread. 16 th week Estu Sinduningrum ST,MT

Mata Kuliah : Pemrograman Berbasis Objek Pertemuan : 7

1.Tujuan. 2. Latar Belakang

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

Bahasa Pemrograman :: Dasar Pemrograman Java

Algoritma Pemrograman 1

E-Book PEMROGRAMAN BERORIENTASI OBJEK. Disusun Oleh: Arfian Hidayat, S.Kom

Pemrograman Lanjut Jurusan S1 Teknik Informatika. 9/17/2012 Ratno

Transkripsi:

Paket dan Interface 15 th week Estu Sinduningrum ST,MT

Mengimpor paket yang Telah Dibuat ke dalam program

Langkah-langkah Mengimpor paket yang Telah Dibuat ke dalam program Berikut ini contoh kode program yang akan menunjukkan cara pembuatan paket. Di sini, kita akan menyimpan file kode program ke dalam paket contohpkg, yang secara fisik diisimpan dalam direktori ContohPkg. Ikuti langkah-langkah berikut:

Latihan 82

set CLASSPATH dari direktori kerja Anda. sebagai contoh, apabila Anda, bekerja di direktori E:\Latihan_OOP, maka Anda dapat menuliskan perintah berikut pada command-prompt. Aktifkan direktori kerja Anda dan buat direktori baru dengan nama ContohPkg di dalamnya melalui perintah berikut:

Buat file baru dengan nama Lingkaran.java dan simpan ke dalam direktori Contohpkg. lsikan kode berikut ke dalamnya. package ContohPkg; public class Lingkaran { private final double PI = 3.1416; private double r; public Lingkaran(double r) { this.r = r; public double luas() { return (PI * r * r); public double keliling() { return (2 * PI * r);

Buat file baru dengan nama Segitiga.java dan simpan ke dalam direktori Contohpkg. lsikan kode berikut ke dalamnya. package ContohPkg; public class Segitiga { private double tinggi; private double alas; public Segitiga(double tinggi, double alas) { this.tinggi = tinggi; this.alas = alas; public double luas() { return ((tinggi * alas)/2);

Buat file baru dengan nama DemoPanggilPaket.java dan simpan ke dalam direktori Latihan_OOP. lsikan kode berikut ke dalamnya. // mengimpor semua kelas yang terdapat pada paket ContohPkg import ContohPkg.*; class DemoPanggilPaket { public static void main(string[] args) { Lingkaran oblingkaran = new Lingkaran(7); Segitiga obsegitiga = new Segitiga(4, 3); System.out.println("Luas lingkaran : " + oblingkaran.luas()); System.out.println("Keliling lingkaran : " + oblingkaran.keliling()); System.out.println("Luas Segitiga : " + obsegitiga.luas());

Paket di dalam Paket package pkg t1[.pkg 2 [.pkg 3[pkgN]]] ;

Peranan Tingkat Akses di dalam Paket Java membagi empat kategori dari keberadaan sebuah anggota kelas, yaitu sebagai berikut: Kelas turunan di dalam paket yang sama. Bukan kelas turunan di dalam paket yang sama. Kelas turunan di dalam paket yang berbeda. Bukan kelas turunan dan juga berada di dalam paket yang berbeda

Tabel berikut ini akan menunjukkan apakah anggota kelas dengan tingkat akses tertentu dapat diakses oleh bagian-bagian di atas atau tidak. Tingkat Akses private Tingkat Akses protected Tingkat Akses public Tanpa Tingkat Akses Kelas yang sama Ya Ya Ya Ya Kelas turunan Paket sama Bukan Kelas turunan Paket sama Kelas turunan Paket berbeda Bukan Kelas turunan Paket berbeda Tidak Ya Ya Ya Tidak Ya Ya Ya Tidak Ya Ya Tidak Tidak Tidak Ya Tidak

Contoh hirarki kelas dan interface Dengan demikian, keraskelas ini harus mengimplementasikan semua method yang terdapat pada interface AlatMusik. Kelas AlatMusikPetik, AlatMusikTiup, dan AlatMusikpukul mengimplementaskan interface AlatMusik. selanjutnya, kita menurunkan kelas AlatMusikPerik menjadi dua kelas turunan lainnya, yaitu kelas Gitar dan Bass. Melalui cara ini, kelas Gitar akan mewarisi sifat-sifat yang terdapat pada kelas AlatMusikPetik

Latihan 83 DemoInterface.java

interface AlatMusik { void mainkan(); void setelnada(); String ambilnama(); class AlatMusikPetik implements AlatMusik { protected String nama; public void mainkan() { System.out.println(ambilNama() + " dimainkan dengan cara petik"); public void setelnada() { System.out.println("Setel nada pada " + ambilnama()); public String ambilnama() { return nama; class AlatMusikTiup implements AlatMusik { protected String nama; public void mainkan() { System.out.println(ambilNama() +" dimainkan dengan cara tiup"); public void setelnada() { System.out.println("Setel nada pada " + ambilnama()); public String ambilnama() { return nama; class Estu AlatMusikPukul Sinduningrum, implements ST, MT AlatMusik { protected String nama; public void mainkan() {System.out.println(ambilNama() + " dimainkan dengan cara pukul"); public void setelnada() { System.out.println("Setel nada pada " + ambilnama()); public String ambilnama() { return nama; class Gitar extends AlatMusikPetik { Gitar(String nama) { this.nama = nama; class Bass extends AlatMusikPetik { Bass(String nama) { this.nama = nama; class DemoInterface { public static void main(string[] args) { AlatMusikPetik gitar, bass; gitar = new Gitar("Gitar"); bass = new Bass("Bass"); gitar.mainkan(); gitar.setelnada(); System.out.println(); bass.mainkan(); bass.setelnada();

Membuat Referensi ke Tipe Interface Selain ke tipe kelas, kita juga dapat membuat sebuah referensi objek ke tipe interface. Sebagai contoh, kita dapat membuat referensi ke interface AlatMusik untuk memanggil method yang terdapat pada kelas Gitar dan Bass. Perhatikan contoh potongan kode program berikut ini.

Variabel di dalam Interface Sebuah interface tidak hanya dapat berisi sekumpulin method saja, akan tetapi juga berisi deklarasi variabel-variabel di dalamnya. Hal yang perlu diperhatikan di sini, bahwa variabel-variabel tersebut akan memiliki sifat statis dan final. Ini berarti bahwa variabel-variabel tersebut akan dianggap sebagai konstanta yang nilainya tidak dapat diubah oleh kelas-kelas yang mengimplementasikannya.

Latihan 84 DemoVarInterface.java

import java.io.*; interface Hari { int MINGGU = 1; int SENIN = 2; int SELASA = 3; int RABU = 4; int KAMIS = 5; int JUMAT = 6; int SABTU = 7; class DemoVarInterface implements Hari { public static void main(string[] args) { String sinput = null; System.out.print("Masukkan nomor hari (1..7): "); InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(isr); sinput = br.readline(); int i = Integer.parseInt(sInput); String namahari = null; switch (i) { case MINGGU : namahari = "Minggu"; break; case SENIN : namahari = "Senin"; break; case SELASA : namahari = "Selasa"; break; case RABU : namahari = "Rabu"; break; case KAMIS : namahari = "Kamis"; break; case JUMAT : namahari = "Jumat"; break; case SABTU : namahari = "Sabtu"; break; System.out.println("Hari ke-" + i + " adalah " + namahari); catch (IOException ioe) { ioe.printstacktrace(); try {

Interface Dapat Diturunkan Menjadi Interface Lain Sama halnya dengan kelas, interface uga dapat diturunkan menjadi interface lain dengan menggunakan kata kunci extends. Namun terdapat satu hal yang harus diperhatikan yaitu pada saat kita mengimplementasikan interface turunan, kita juga harus mengimplementasikan semua method yang didefinisikan pada interface induk.

Latihan 85 DemoInterfaceTurunan.java

interface IInduk { double tambah(double a, double b); double kurang(double a, double b); interface ITurunan extends IInduk { double kali(double a, double b); double bagi(double a, double b); class Aritmetika implements ITurunan { private double x; private double y; Aritmetika(double x, double y) { this.x = x; this.y = y; public double tambah(double a, double b) { return (a + b); public double kurang(double a, double b) { return (a - b); public double kali(double a, double b) { return (a * b); public double bagi(double a, double b) { return (a / b); public void cetakhasil() { System.out.println("x = " + x); System.out.println("y = " + y); System.out.println(); System.out.println("x + y = " + tambah(x, y)); System.out.println("x - y = " + kurang(x, y)); System.out.println("x * y = " + kali(x, y)); System.out.println("x / y = " + bagi(x, y)); class DemoInterfaceTurunan { public static void main(string[] args) { // membuat objek Aritmetika dengan x=10.0 dan y=2.5 Aritmetika obj = new Aritmetika(10.0, 2.5); obj.cetakhasil();

Penjebakan Eksepsi

Penjebakan Eksepsi Hal terburuk dan paling dihindari dalam dunia pemrograman adalah bug (kesalahan) pada saat proses eksekusi di dalam program yang kita buat. Secara umum, kesalahan tersebut disebut juga dengan eksepsi. Menurut definisi umum, eksepsi adalah suatu kondisi abnormal yang terjadi pada saat runtime. Pada bahasa pemprogaman lain yang belum mendukung mekanisme penanganan eksepsi, kesalahan-kesalah yang terjadi harus diperiksa secara manual (biasanya melalui kode error tertentu).

Penjebakan Eksepsi Cara seperti itu tentu memiliki kelemahan karena proses pelacakannya masih sulit dilakukan. Untuk mengatasi permasalahan tersebut, Java menyediakan sebuah mekanisme penanganan kesalahan yang biasa disebut dengan exception-handling. Setiap kesalahan akan dibentuk menjadi sebuah objek.

Penjebakan Eksepsi Dalam Java, runtime error (kesalahan-kesalahan yang terjadi pada saat program sedang berjalan) direpresentasikan dengan eksepsi. Eksepsi adalah suatu objek yang dibuat pada saat program mengalami suatu kondisi yang tidak wajar (abnormal). Pada saat eksepsi terjadi maka dikatakan eksepsi telah dibangkitkan/dilempar - thrown. Apabila terjadi, maka eksepsi tersebut haruslah ditangkap - caught. Eksepsi dapat dibangkitkan secara otomatis oleh sistem Java runtime secara manual oleh kita sendiri melalui kode yang kita tulis.

Penjebakan Eksepsi Terdapat lima buah kata kunci yang disediakan oleh Java menangani eksepsi, yaitu: try, catch, throw, throws, dan finally. Kegunaan dari kelima kata kunci tersebut akan kita kaji lebih detail pada slide ini.

Blok throw, try dan catch Untuk menanggapi Exception, pemanggilan terhadap metode yang menghasilkan Exception harus ditempatkan di dalam blok try. Blok try adalah blok kode yang dimulai kata kunci try diapit pasangan kurung kurawal ({... ). Setiap blok try diasosiasikan dengan satu blok catch atau lebih.

Contoh: trv { // Pemanggilan metode yang menghasilkan exception // dilakukan di sini Jika metode dimaksudkan untuk menangkap Exception yang dilempar metode yang dipanggil,maka pemanggilan harus ditempatkan di blok try. Jika Exception dilempar, Exception itu ditangani oleh blok catch. Blok-blok catch menangani tipe tipe Exception berbeda. Berikut ini adalah blok try dan cacth untuk menangani Exception dengan tipe Exception. Blok throw, try dan catch

Blok throw, try dan catch Contoh: Try { // Pemanggilan metode yang menghasilkan exception // dilakukan di sini catch (Excepflon e) { // Penanganan terhadap exception // dilakukan di sini

Blok throw, try dan catch Tahap-tahap Kejadian: 1. Ketika suatu metode di blok try melemparkan sembarang tipe Exception, eksekusi blok try tersebut dihentikan. 2. Kendali program segera dilewatkan ke blok catch yang diasosiasikan. 3. Jika blok catch menangani tipe Exception yang diberikan, maka blok catch akan mengambil alih kendali eksekusi. 4. Jika blok catch tidak dapat menangani Exception, rnaka Exception dilewatkan ke pemanggil metode itu. 5. Di aplikasi, proses ini berlanjut sampai blok catch dapat menangkap Exception atau Exception mencapai metode main() dan tidak ditangkap sehingga menyebabkan aplikasi diakhiri.

Blok throw, try dan catch Penanganan Exception dilakukan di blok catch. Penanganan kesalahan ini untuk menghindari Exception ditangani oleh sistem Java yang secara default segera menghentikan program aplikasi dan mencetak stack pemanggilan Terdapat tiga manfaat penanganan Exception sendiri, yaitu : 1. memungkinkan kita meniadakan kesalahan 2. mencegah program dihentikan sistem Java secara otomatis 3. dapat irember'ikan tambahan informasi yang berguna untuk pemakai aplikasi atau untuk kegiatan debugging.

Latihan 86-88 DemoInterfaceTurunan.java

/* * DivByZeroNextToy.java * * Created on June 1, 2003, 7:12 AM */ /** */ public class DivByZeroNextToy { /** Creates a new instance of DivByZeroNextToy */ public DivByZeroNextToy() { public static void main (String args[]) { int zeroint = 0; int anint = 10; try { int divresult = anint / zeroint; System.out.println("Hasilnya adalah " + divresult); catch (ArithmeticException e) { //menangkap kesalahan div-by-zero System.out.println("Terjadi pembagian dengan nol"); System.out.println("Diatasi blok penanganan sendiri"); System.out.println("Kalimat setelah catch"); Latihan 88

/* * DivByZeroNextNextToy.java */ public class DivByZeroNextNextToy { /** Creates a new instance of DivByZeroNextNextToy */ public DivByZeroNextNextToy() { public static void main (String args[]) { int anint = 10; for (int zeroint =-1;zeroInt<2;zeroInt++){ try { int divresult = anint / zeroint; System.out.println("Hasilnya adalah " + divresult); catch (ArithmeticException e) { //menangkap kesalahan div-by-zero System.out.println("Terjadi pembagian dengan nol"); System.out.println("Diatasi blok penanganan sendiri"); System.out.println("Kalimat setelah catch"); Latihan 89

/* * DivByZeroNextNextNextToy.java */ public class DivByZeroNextNextNextToy { Latihan 90 /** Creates a new instance of DivByZeroNextNextNextToy */ public DivByZeroNextNextNextToy() { public static void main (String args[]) { int anint = 10; for (int zeroint =-1;zeroInt<2;zeroInt++){ try { int divresult = anint / zeroint; System.out.println("Hasilnya adalah " + divresult); catch (ArithmeticException e) { //menangkap kesalahan div-by-zero System.out.println("Pesan di exception: "+e); System.out.println("Terjadi pembagian dengan nol"); System.out.println("Diatasi blok penanganan sendiri"); System.out.println("Kalimat setelah catch");

Banyak Blok catch Metode dapat merrpuriyai blok untuk menangkap beberapa tipe Exception sekaligus. Java mendukung banyak blok catch. Masing-masing blok catch harus menspesifikasikan tipe Exception yang berbeda.

Contoh: try { Banyak Blok catch // Pemanggilan metode yang menghasilkan exception // dilakukan di sini catch (ExceptionClassA e) { // Penanganan terhadap exceplionolassa // dilakukan di sini catch(exceptionclassb e) { // Penanganan terhadap excepllonclassb // dilakukan di sini Catch (ExceptionClassC e) { // Penanganan terhadap exceptionclassc // dilakukan di sini

Banyak Blok catch Ketika Exception dilempar di blok try, Exception ditangkap lebih dulu oleh blok catch pertama yang cocok. Hanya satu blok catch yang dapat dieksekusi. Kemampuan banyak catch ini dikarenakan pada beberapa kasus, metodemetode di blok try dapat menerbitkan lebih dari satu Exception. Bahkan satu metode yang dipanggil pun dapat mengirim lebih dari satu Exception berbeda. Dengan kemampuan mempunyai lebih dari satu klausa catch maka kita dapat menangani bermacam-macam macam tipe Exception berbeda. Begitu dijumpai satu kalimat catch yang cocok maka yang lainnya dilompati menuju kode di bawah blok try/catch.

/* * DivByZeroNextNextNextNextToy.java */ public class DivByZeroNextNextNextNextToy { public DivByZeroNextNextNextNextToy() { public static void main (String args[]) { int anint = 10; try { int divby = args.length; int divresult = anint / divby; System.out.println("Hasilnya adalah " + divresult); int c[] = {1; c[10] = 100; catch (ArithmeticException e) { //menangkap kesalahan div-by-zero System.out.println("Terjadi pembagian dengan nol"); System.out.println("Diatasi blok penanganan A"); catch (ArrayIndexOutOfBoundsException e) { //menangkap kesalahan out of bounds System.out.println("Terjadi indeks array di luar batas"); System.out.println("Diatasi blok penanganan B"); System.out.println("Kalimat setelah catch"); Latihan 91

Banyak Blok catch Ketika kita menggunakan banyak klausa catch, maka kita harus menyusun subkelassubkelas. Exception muncul lebih dulu sebelum induk-induk superkelasnya. Penyusunan ini karena pernyataan catch yang menggunakan superkelas akan menangkap Exception dari tipe kelasnya ditambah semua tipe subkelasnya. Dengan demikian, catch terhadap Exception subkelas tidak pernah dicapai bila lebih dulu terdapat klausa catch terhadap Exception superkelas. Kita tidak usah kawatir karena dibantu kompilator Java. Kode yang tidak dapat dicapai (unreachable code) akan dilaporkan sebagai kesalahan saat kompilasi

/* * DivByZeroNextNextNextNextNextToy.java */ public class DivByZeroNextNextNextNextNextToy { public DivByZeroNextNextNextNextNextToy() { public static void main (String args[]) { int anint = 10; try { int divby = args.length; int divresult = anint / divby; System.out.println("Hasilnya adalah " + divresult); int c[] = {1;c[10] = 100; catch (Exception e) { //menangkap kesalahan System.out.println("Terjadi kesalahan"); System.out.println("Diatasi blok penanganan A"); catch (ArithmeticException e) { //menangkap kesalahan div-by-zero System.out.println("Terjadi pembagian dengan nol"); System.out.println("Diatasi blok penanganan B"); System.out.println("Kalimat setelah catch"); Latihan 93

Jika kita melakukan kompilasi program ini, kita akan memperoleh pesan kesalahan menyatakan kalimat catch kedua tidak akan pernah dicapai karena Exception telah ditangkap kalimat catch pertama. Hal ini disebabkan AritmeticException merupakan subkelas Exception, kalimat catch pertama akan menangani semua kesalahan yang menyebabkan Exception. Dengan demikian kalimat catch kedua tidak akan pernah dieksekusi. Untuk membenarkan program itu, kita tinggal melakukan penyusunan kalimat catch pertama menjadi kalimat catch kedua.

/* * DivByZeroNextNextNextNextNextNextToy.java */ public class DivByZeroNextNextNextNextNextNextToy { public DivByZeroNextNextNextNextNextNextToy() { public static void main (String args[]) { int anint = 10; try { int divby = args.length; int divresult = anint / divby; System.out.println("Hasilnya adalah " + divresult); int c[] = {1; c[10] = 100; catch (ArithmeticException e) { //menangkap kesalahan div-by-zero System.out.println("Terjadi pembagian dengan nol"); System.out.println("Diatasi blok penanganan A"); catch (Exception e) { //menangkap kesalahan System.out.println("Terjadi kesalahan"); System.out.println("Diatasi blok penanganan B"); System.out.println("Kalimat setelah catch"); Latihan 94

Klausa finally Berikut ini bentuk umum penanganan eksepsi di dalam Java try { // 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

Klausa finally Pada situasi normal (yaitu tidak ada Exception yang dilempar), blok Finally dieksekusi segera setelah blok try. Ketika Exception dilempar, blok finally dieksekusi setelah blok catch yang menangani Exception dilakukan.

/* * DivByZeroNextNextNextNextNextNextNextToy.java */ public class DivByZeroNextNextNextNextNextNextNextToy { DivByZeroNextNextNextNextNextNextNextToy */ public DivByZeroNextNextNextNextNextNextNextToy() { public static void main (String args[]) { int zeroint = 0; int anint = 10; Latihan 95 try { int divresult = anint / zeroint; System.out.println("Hasilnya adalah " + divresult); catch (ArithmeticException e) { //menangkap kesalahan div-by-zero System.out.println("Terjadi pembagian dengan nol"); System.out.println("Diatasi blok penanganan sendiri"); finally { System.out.println("Kalimat di finally"); System.out.println("Kalimat di luar blok try-catch-finally");

Penjebakan Eksepsi Di sini, TipeEksepsi adalah tipe dari eksepsi yang terjadi. Tipe tersebut direpresentasikan dengan sebuah kelas, misalnya : NullPointerException,ArithmeticException,ArrayIndexOutOf BoundsException, dan sebagainya

Menggunakan Kata Kunci try dan catch Pada subbab sebelumnya kita telah melihat bagaimana Java mencegr eksepsi secara default. Namun, pada umumnya, pencegahan ekseps dilakukan oleh kita sendiri, sebagai programmer. Untuk melakukan hal tersebut, kita perlu mendefinisikan blok trycatch. Berikut ini contoh : program yang merupakan perbaikan dari program sebelumnya

throw Kata kunci throw digunakan di program untuk melempar (throw) terhadap Exception secara eksplisit. Bentuk umum kalimat adalah throw ThrowableInstance; Instan Throwable harus merupakan objek dengan tipe Throwable atau subkelas dari Throwable. Terdapat dua cara kita memperoleh objek Throwable, yaitu: 1. Menggunakan parameter di klausa catch. 2. Menciptakan salah satu dengan menggunakan operator new().

throw Eksekusi program akan dihentikan segera setelah kalimat throw, kalimat-kalimat setelah kalimat throw tidak dieksekusr. Java akan melakukan inspeksi blok try terdekat untuk menenrukan kalimat catch yang cocok dengan tipe Exception yang dilempar. Jika Java menemukannya, maka kendali program ditransfer ke kalimat itu. Jika tidak ditemukan, maka Java akan melakukan penelusuran ke blok try berikutnya sampai ke puncak stack dan bila tetap tidak ditemukan,maka penanganan Exception secara default akan melakukan tugasnya menghentikan program dan mencetak iejak penelusuran stack.

public class ThrowToy { public ThrowToy() { static void throwexception() throws Exception{ try { // Dilemparkan exception throw new Exception("Demo terhadap kalimat throw"); catch (Exception e) { System.out.println("Penangkapan exception di test"); throw e; // Exception kembali dilemparkan Latihan 96 static void test(){ try { throwexception(); catch (Exception e) { //menangkap exception System.out.println("Kembali ditangkap exception: " + e); public static void main (String args[]) { test();

throw Program di atas memperoleh dua kesempatan penanganan kesalahan. Di metode throwexception(). Exception yang dilemparkan telah ditangani di kalimat catch di metode itu. Kemudian Exception yang telah ditangkap kembali dilemparkan sehingga ditangkap metode main(). Kalimat yang melakukan penciptaan dan pelemparan Exception yang baru sekaligus adalah sebagai berikut: throw new Exception("Demo terhadap kalimat throw"), yaitu melakukan penciptaan dengan perintah new Exception sehingga diperoleh instan objek Exception, terus segera instan langsung dilemparkan dengan perintah throw.

throw Terdapat dua contrutor di Exception, yaitu: 1. Constructor tanpa argumen. 2. Constructor dengan argumen String yang mendeskripsikan Exception. String ini dapat ditampilkan menggunakan print() atau println() sebagai argumen atau diperoleh dengan memanggil getmessage() yang didefinisikan di Throwable

throws Jika metode menghasilkan Exception, maka metode itu harus menspesifikasikan perilaku ini sehingga pemanggil metode itu dapat dijaga agar menghadapi Exception ini. Kita melakukan ini dengan memberi klausa throws di deklarasi metode. Klausa throws mendaftarkan tipe-tipe Exception yang dapat dilempar metode. Hal ini diperlukan agar diketahui semua Exception yang mungkin dilempar metode atau subkelas-subkelasnya, kecuali tipe Error atau RuntimeException yang dilakukan sistem Java secara otomatis bila menemui pelanggaran aturan-aturan bahasa Java. Semua Exception yang hendak dilempar metode harus dideklarasikan dr klausa throws.

Bentuk umurrdeklarasi metode yang memasukkan klausa throws adalah. <method-modifier> type method-name throws exception-list. { // badan metode throws Exception-list adalah daftar Exception yang dipisahkan dengan koma berisi daftar Exception yang dapat dilempar oleh metode.

public class ThrowsToy { /** Creates a new instance of ThrowsToy */ public ThrowsToy() { Latihan 97 static void throwsexception() throws IllegalAccessException { System.out.println("Di dalam throwsexception."); throw new IllegalAccessException("Exception di throwsexception"); public static void main (String args[]) { try {throwsexception(); catch (IllegalAccessException e) { //menangkap exception System.out.println("Ditangkap exception: " + e);

public class ThrowsNextToy { Latihan 98 /** Creates a new instance of ThrowsNextToy */ public ThrowsNextToy() { static void throwsexception() throws IllegalAccessException { System.out.println("Di dalam throwsexception."); throw new IllegalAccessException("Exception di throwsexception()"); public static void main (String args[]) { throwsexception();

Cont Next Week THANK YOU