Paket dan Interface
15th week
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:
Estu Sinduningrum, ST, MT
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
Buat file baru dengan nama
Lingkaran.java
dan simpan ke
dalam direktori
Contohpkg.
lsikan kode berikut ke dalamnya.
Estu Sinduningrum, ST, MT
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.
Estu Sinduningrum, ST, MT
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.
Estu Sinduningrum, ST, MT
// 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
Estu Sinduningrum, ST, MT
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 Tidak Ya Ya Ya Bukan Kelas turunan Paket sama Tidak Ya Ya Ya Kelas turunan Paket berbeda Tidak Ya Ya Tidak Bukan Kelas turunan Paket berbeda
Tidak Tidak Ya Tidak
Contoh hirarki kelas dan interface
Estu Sinduningrum, ST, MT
Kelas AlatMusikPetik, AlatMusikTiup,
dan AlatMusikpukul
mengimplementaskan interface
AlatMusik.
Dengan demikian,
keras-kelas ini harus
mengimplementasikan
semua method yang
terdapat pada 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
DemoInterface.java
Estu Sinduningrum, ST, MT 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 AlatMusikPukul implements 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.
DemoVarInterface.java
Estu Sinduningrum, ST, MT 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);
try {
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(); }
} }
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.
DemoInterfaceTurunan.java
Estu Sinduningrum, ST, MT
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
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
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.
Estu Sinduningrum, ST, MT
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.
Estu Sinduningrum, ST, MT
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.
Estu Sinduningrum, ST, MT
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.
Estu Sinduningrum, ST, MT
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.
Estu Sinduningrum, ST, MT
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.
Blok throw, try dan catch
DemoInterfaceTurunan.java
Latihan
88
/* * 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");
/*
* 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"); } } }
Estu Sinduningrum, ST, MT
Latihan
89
/*
* DivByZeroNextNextNextToy.java */
public class DivByZeroNextNextNextToy {
/** 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");
} } } Estu Sinduningrum, ST, MT
Latihan
90
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.
Banyak Blok catch
Banyak Blok catch
Contoh: try {
// 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
}
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,
metode-metode 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.
Banyak Blok 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");
} } Estu Sinduningrum, ST, MT
Latihan
91
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
Banyak Blok catch
/*
* 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");
} } Estu Sinduningrum, ST, MT
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");
} } Estu Sinduningrum, ST, MT
Latihan
94
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
}
Estu Sinduningrum, ST, MT
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;
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"); } }
Estu Sinduningrum, ST, MT
Latihan
95
Di sini, TipeEksepsi adalah tipe dari eksepsi yang terjadi.
Tipe tersebut direpresentasikan dengan sebuah kelas, misalnya :
NullPointerException,ArithmeticException,ArrayIndexOutOf
BoundsException, dan sebagainya
Estu Sinduningrum, ST, MT
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
try-catch.
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().
Eksekusi program akan dihentikan segera setelah kalimat throw,
kalimat-kalimat setelah kalimat throw tidak dieksekusr.
Java akan melakukan inspeksi blok try terdekat untuk
menen-rukan 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.
Estu Sinduningrum, ST, MT
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} } }
static void test(){ try {
throwException(); }catch (Exception e) { //menangkap exception
System.out.println("Kembali ditangkap exception: " + e);} }
public static void main (String args[]) { test();
} } Estu Sinduningrum, ST, MT
Latihan
96
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.
Estu Sinduningrum, ST, MT
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
throw
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
}
Exception-list adalah daftar Exception yang dipisahkan dengan koma
berisi daftar Exception yang dapat dilempar oleh metode.
throws
public class ThrowsToy {
/** Creates a new instance of ThrowsToy */ public ThrowsToy() {
}
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); } } } Estu Sinduningrum, ST, MT
Latihan
97
public class ThrowsNextToy {
/** 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(); } } Estu Sinduningrum, ST, MT