36
Exception Handling Try, Catch, Finally Throws

Exception Handling

  • Upload
    josiah

  • View
    149

  • Download
    6

Embed Size (px)

DESCRIPTION

Exception Handling. Try, Catch, Finally Throws. Apa itu Exception?. Exception adalah sebuah peristiwa yang menjalankan alur proses normal pada program. Peristiwa ini biasanya berupa kesalahan(error) dari beberapa bentuk. Ini disebabkan program kita berakhir tidak normal. - PowerPoint PPT Presentation

Citation preview

Page 1: Exception Handling

Exception Handling

Try, Catch, FinallyThrows

Page 2: Exception Handling

Apa itu Exception? Exception adalah sebuah peristiwa yang menjalankan alur proses normal

pada program. Peristiwa ini biasanya berupa kesalahan(error) dari beberapa bentuk. Ini disebabkan program kita berakhir tidak normal.

Untuk menangani exception dalam Java, kita gunakan blok try-catch-finally. Apa yang kita lakukan dalam program kita adalah kita menempatkan pernyataan yang mungkin menghasilkan exception dalam blok ini.

Page 3: Exception Handling

Bentuk umum dari blok try-catch-finally adalah,

try{//tulis pernyataan yang dapat mengakibatkan exception//dalam blok ini}catch( <exceptionType1> <varName1> ){//tulis aksi apa dari program Anda yang dijalankan jika ada//exception tipe tertentu terjadi}catch( <exceptionTypen> <varNamen> ){//tulis aksi apa dari program Anda yang dijalankan jika ada//exception tipe tertentu terjadi}finally{//tambahkan kode terakhir di sini}

Page 4: Exception Handling

Exception dilemparkan selama eksekusi dari blok try dapat ditangkap dan ditangani dalam blok catch. Kode dalam blok finally selalu di-eksekusi.

Berikut ini adalah aspek kunci tentang sintak dari konstruksi try-catch-finally:◦ Notasi blok bersifat perintah◦ Setiap blok try, terdapat satu atau lebih blok catch, tetapi hanya satu blok finally.◦ Blok catch dan blok finally harus selalu muncul dalam konjungsi dengan blok try,

dan diatas urutan◦ Blok try harus diikuti oleh paling sedikit satu blok catch ATAU satu blok

finally, atau keduanya.◦ Setiap blok catch mendefinisikan sebuah penanganan exception. Header dari blok

catch harus membawa satu argumen, dimana exception pada blok tersebut akan ditangani.

Exception harus menjadi class pelempar atau satu dari subclassesnya.

Page 5: Exception Handling
Page 6: Exception Handling

Menangkap Exception 1public class TestExceptions{public static void main( String[] args ){for( int i=0; true; i++ ){System.out.println("args["+i+"]=“+args[i]); } }}

Compile dan jalankan program TestExceptions. Keluarannya akan tampak seperti ini: javac TestExceptions one two three

args[0]=oneargs[1]=twoargs[2]=threeException in thread "main"java.lang.ArrayIndexOutOfBoundsException: 3at TestExceptions.main(1.java:4)

Page 7: Exception Handling

Ubah program TestExceptions untuk menangani exception, keluaran program setelah ditangkap exception-nya akan seperti ini:

javac TestExceptions one two threeargs[0]=oneargs[1]=twoargs[2]=threeException caught:java.lang.ArrayIndexOutOfBoundsException: 3Quiting…

Page 8: Exception Handling

Menangkap Exception 2 Melakukan percobaan pada beberapa program yang telah

Anda tulis adalah hal yang baik sebelummenghadapi exception. Karena pada program di atas Anda tidak menangkap exception, maka eksekusi dengan mudahnya berhenti mengeksekusi program Anda. Kembali kepada program diatas dan gunakan penanganan exception.

Page 9: Exception Handling

A Ja

va E

xce

ptio

n H

an

dlin

g E

xam

ple

Modifikasi program berikut, sehingga bisa di-kompile:

public static void cat(File file) { RandomAccessFile input = null; String line = null; try { input = new RandomAccessFile(file, "r"); while ((line = input.readLine()) != null) { System.out.println(line); } return; } finally { if (input != null) { input.close(); } } }

Page 10: Exception Handling

A Ja

va E

xce

ptio

n H

an

dlin

g E

xam

ple

Jawaban:

public static void cat(File file) { RandomAccessFile input = null; String line = null;try { input = new RandomAccessFile(file, "r"); while ((line = input.readLine()) != null) { System.out.println(line); }

return; } catch(FileNotFoundException fnf) { System.err.format("File: %s not found%n", file); } catch(IOException e) {

System.err.println(e.toString()); } finally { if (input != null) { try {

input.close(); } catch(IOException io) { } } } }

Page 11: Exception Handling

Object Oriented Concept

Konsep kelas

Membuat kelas

Lingkup kelas

Akses ke anggota kelas

Mereferensikan obyek menggunakan perintah this

Konstruktor

Overload konstruktor

Page 12: Exception Handling

Class and how to defined

Class (Kelas):kelas adalah persepsi untuk objek tertentu, kita dapat

menggunakan definisi class untuk membuat objek dari tipe kelas.

Page 13: Exception Handling

Construktor :Pada saat membuat sebuah class, kita harus bisa memastikan tentang nilai awal yang disimpan oleh seluruh data objek. Karena data objek menunjuk-kan karakteristik objek tersebut, sehingga seluruh nilai yang tersimpan didalamnya haruslah logis dan valid, misalnya jari-jari lingkaran tidak boleh nol atau negatif.

Kita bisa membuat sebuah method yang berfungsi untuk mengubah nilai seluruh data objek, contoh method initAllValue(). Namun persoalannya adalah bagaimana nilai yang disimpan oleh data objek saat objek tersebut diciptakan, bukan saat objek sudah ada. Method diatas hanya bisa dipanggil pada saat objek sudah ada, buka pada saat objek baru dibuat.

Untuk mengatasinya, digunakanlah apa yang kita sebut constructor, yaitu sebuah metode OOP yang dipanggil secara otomatis pada saat sebuah objek diciptakan.

Page 14: Exception Handling

1. Single constructor, yaitu hanya ada satu constructor pada class2. Constructor dengan parameter, yaitu constructor dengan data yang

bisa dikirim pada saat pennciptaan objek.3. Multiple constructor, yaitu terdapat beberapa constructor yang bisa

kita pilih pada saat penciptaan objek.

Isi constructor itu sendiri bisa berupa pemanggilan method internal atau intruksi lain.

Sama seperti fungsi atau method pada umumnya, constructor juga bisa memiliki variasi parameter. Diantaranya:

Page 15: Exception Handling

1. Single constructor :

Hanya ada satu construktor dalam class, ini bisa kita temukan pada contoh berikut : Contruktor untuk proses inisialisasi jari-jari. Dengan memberikan data awal 1 (satu) sebagai nilai default untuk jari-jari, dengan asumsi nilai ini nilai terkecil untuk sebuah satuan panjang. Bisa juga diberikan nilai lain kecuali nol atau negatif.

Contoh program berikut adalah modifikasi program sebelumnya, dimana kita sudah menambahkan constructor pada class lingkaran tersebut. Perhatikan bagaimana constructor ini bekerja:

Page 16: Exception Handling

class Lingkaran{

private double jariJari;public Lingkaran(){ setJariJari (1); }public void setJariJari (double r){ if (r>0) jariJari=r; }public double getJariJari(){ return (jariJari); }public double hitungLuas(){ return (Math.PI * jariJari * jariJari); }public double hitungKeliling(){ return (Math.PI * 2.0 * jariJari); }

}

* Constuctor sebagai proses inisialisasi, yang berisi instruksi memanggil method internal setJariJari().

* Didefinisikan public* Memiliki nama sama

dengan nama class

Page 17: Exception Handling

Kedua program diatas bisa dikompilasi tanpa kesalahan, namum tidak bisa dijalankan karena kode-kode tersebut hanya merupakan implementasi class. Jika kita menjalankan juga maka akan ada pesan kesalahan yang akan diberikan oleh java yang menyatakan fungsi main() tidak adal dalam file sbb:

Exception in thread “main” java.lang.NoSuchMethodError: mainPress any key to contonue . . .

Solusinya adalah:Harus dibuatkan sebaah class yang berisikan rutin program yaitu dengan fungsi main(). Class baru ini memiliki karakteristik sbb :

1. Dideklarasikan sebagai class public2. Nama Class menjadi nama file3. Berisi seluruh kode class Lingkaran

Page 18: Exception Handling

1 class Lingkaran2 {3 private double jariJari;4 public Lingkaran()5 { setJariJari (1); }6 public void setJariJari (double r)7 { if (r>0) jariJari=r; }8 public double getJariJari()9 { return (jariJari); }10 public double hitungLuas()11 { return (Math.PI * jariJari * jariJari); }12 public double hitungKeliling()13 { return (Math.PI * 2.0 * jariJari); }14 }15

Page 19: Exception Handling

16 public class CobaLingkaran_117 {18 pulic static void main(String[] args)19 {20 Lingkaran abc = new Lingkaran();21 Lingkaran pqr = new Lingkaran();22 Lingkaran xyz = new Lingkaran();2324 System.out.println (“Data Default :”);25 System.out.println (“-----------------”);26 System.out.println (“Jari – Jari ABC : ” +

abc.getJariJari());27 System.out.println (“Jari – Jari PQR : ” +

pqr.getJariJari());28 System.out.println (“Jari – Jari XYZ : ” +

xyz.getJariJari());29 System.out.println ();

Page 20: Exception Handling

30 abc.setJariJari(5));31 pqr.setJariJari(3.2));32 xyz.setJariJari(1.8));3334 System.out.println (“Data Sekarang :”);35 System.out.println (“-------------------- ”);36 System.out.println (“Jari – Jari ABC : ” +

abc.getJariJari());37 System.out.println (“Jari – Jari PQR : ” +

pqr.getJariJari());38 System.out.println (“Jari – Jari XYZ : ” +

xyz.getJariJari());39 System.out.println ();40 }41 }

Page 21: Exception Handling

Bila program ini dijalankan :

Mula-mula ketiga class lingkaran abc, pgq dan xyz memiliki data jari-jari yang sama seperti yang telah ditentukan class constructor. Kemudian ketiga class ini diganti dengan nilai yang baru. Maka output dari program tersebut adalah:

Data dafault :----------------Jari – jari Lingkaran ABC : 1.0Jari – jari Lingkaran PQR : 1.0Jari – jari Lingkaran XYZ : 1.0

Data Sekarang :-------------------Jari – jari Lingkaran ABC : 5.0Jari – jari Lingkaran PQR : 3.2Jari – jari Lingkaran XYZ : 1.8

Page 22: Exception Handling

Catt:Abc, pqr dan xyz adalah tiga objek yang berbeda sekalipun berasa dari class yang sama. Perubahan data pada satu objek tidak berpengaruh pada objek yang lain.

Page 23: Exception Handling

2. Constructor dengan Parameter :

Kekurangan dari single constructor adalah kita tidak bisa menentukan secara langsung nilai dafault jari-jari lingkaran. Setidaknya kita memerlukan dua langkah untuk melakukan setting terhadap jari-jari sesuai yang kita kehendaki yaitu menciptakan objek dan memanggil metode setJariJari().Dengan constructor ber-Parameter kita meringkas dua pekerjaan ini menjadi satu, yaitu dengan menentukan jari-jari langsung saat penciptaan objek. Dalam hal ini kita menyisipkan parameter pada construktor.

Contoh program berikut adalah modifikasi program sebelumnya, dimana kita merubah constructor lingkaran menjari ber-parameter :

Page 24: Exception Handling

1 class Lingkaran2 {3 private double jariJari;4 public Lingkaran(double r)5 { if (r > 0) jariJari = r;6 else jariJari = 1.0; }7 public void setJariJari (double r)8 { if (r>0) jariJari=r; }9 public double getJariJari()10 { return (jariJari); }11 public double hitungLuas()12 { return (Math.PI * jariJari * jariJari); }13 public double hitungKeliling()14 { return (Math.PI * 2.0 * jariJari); }15 }

Page 25: Exception Handling

16 public class CobaLingkaran_217 {18 pulic static void main(String[] args)19 {20 Lingkaran abc = new Lingkaran(5);21 Lingkaran pqr = new Lingkaran(3.2);22 Lingkaran xyz = new Lingkaran(1.8);2324 System.out.println (“Data Default :”);25 System.out.println (“-----------------”);26 System.out.println (“Jari – Jari ABC : ” +

abc.getJariJari());27 System.out.println (“Jari – Jari PQR : ” +

pqr.getJariJari());28 System.out.println (“Jari – Jari XYZ : ” +

xyz.getJariJari());29 System.out.println ();30 }31 }

Page 26: Exception Handling

Modifikasi constructor pada program diatas berdampak pada bagian deklarasi objek ikut berubah karena constructor yang ada sekarang mengharuskan pengiriman data. Sehingga jika program tsb dijalankan menghasilkan : Data dafault :

----------------Jari – jari Lingkaran ABC : 5.0Jari – jari Lingkaran PQR : 3.2Jari – jari Lingkaran XYZ : 1.8

Page 27: Exception Handling

3. Multiple Constructor :

Seakan untuk memenuhi semua keinginan, kedua constructor diatas dirasakan belum bisa memenuhi keinginan user. Ada user yang ingin menggunakan constructor model pertama ada juga model kedua berparameter. Maka dibuatlah tipe ketiga yang memiliki dua tipe tadi.

Semakin komplek class yang kita buat maka akan semakin banyak pula variasi construktor yang akan terjadi. Inilah yang pada akhirnya kita sebut sebagai multiple constructor.

Contoh program berikut akan memperlihatkan bentuk dari multiple construktor.

Page 28: Exception Handling

1 class Lingkaran2 {3 private double jariJari;4 public Lingkaran()5 { setJariJari(1) }6 public Lingkaran(double r)7 { if (r > 0) jariJari = r;8 else jariJari = 1.0; }9 public void setJariJari (double r)10 { if (r>0) jariJari=r; }11 public double getJariJari()12 { return (jariJari); }13 public double hitungLuas()14 { return (Math.PI * jariJari * jariJari); }15 public double hitungKeliling()16 { return (Math.PI * 2.0 * jariJari); }17 }

Page 29: Exception Handling

18 public class CobaLingkaran_319 {20 pulic static void main(String[] args)21 {22 Lingkaran abc = new Lingkaran();23 Lingkaran pqr = new Lingkaran(3.2);24 Lingkaran xyz = new Lingkaran(1.8);2526 System.out.println (“Data Default :”);27 System.out.println (“-----------------”);28 System.out.println (“Jari – Jari ABC : ” +

abc.getJariJari());29 System.out.println (“Jari – Jari PQR : ” +

pqr.getJariJari());30 System.out.println (“Jari – Jari XYZ : ” +

xyz.getJariJari());31 System.out.println ();32 }33 }

Page 30: Exception Handling

Pada program tersebut konstruktor pertama tanpa parameter, Didalamnya kita menetukan jari-jari default sama dengan satu.Kemudian pada constructor model ke dua berparameter, sehingga pemanggilannya pun berbeda yang bisa kita lihat pada bari 22, 23 dan 24 yang menghasilkan sbb:

Data dafault :----------------Jari – jari Lingkaran ABC : 1.0Jari – jari Lingkaran PQR : 3.2Jari – jari Lingkaran XYZ : 1.8

Page 31: Exception Handling

Catt:Pada program tersebut secara tidak langsung objek abc akan diinisialisasikan dengan data 1.0, karena objek yang dibuat tanpa menyertakan data awal untuk jari-jari.

Page 32: Exception Handling

Contoh Program

Page 33: Exception Handling

Con

toh

Pro

gra

m

Page 34: Exception Handling

Con

toh

Pro

gra

m

Page 35: Exception Handling

Con

toh

Pro

gra

m

Page 36: Exception Handling

Terima Kasih