• Tidak ada hasil yang ditemukan

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

N/A
N/A
Protected

Academic year: 2021

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

Copied!
20
0
0

Teks penuh

(1)

Badiyanto, S.Kom, M.Kom

Tujuan Intruksional

Mampu menjelaskan tentang event handling

Mampu menjelaskan tentang method

Mampu menggunakan event handling

(2)

Sub Pokok Bahasan

Keyboard & mouse event

Membuat methodtry..catch

3

Pengertian Eksepsi

 Suatu mekanisme penanganan kesalahan ringan (mild error).

 Peristiwa yang terjadi ketika program menemui kesalahan pada saat instruksi program dijalankan.

(3)

Pengertian Eksepsi

Eksepsi adalah suatu kondisi abnormal yang terjadi pada saat

pengeksekusian suatu perintah.

 Suatu eksepsi juga direpresentasikan oleh sebuah obyek yang menjelaskan tentang eksepsi tersebut.

Apa yang terjadi jika terjadi

kesalahan?

 Maka method tempat eksepsi terjadi akan melakukan dua pilihan  Menangani sendiri eksepsi

 Meneruskannya keluar dengan cara membuat obyek yang menjelaskan eksepsi dan melemparkannya (throw) agar ditangani oleh kode yang memanggil method tersebut.

(4)

Apa yang terjadi jika terjadi

kesalahan?

Secara otomatis akan dilempar sebuah object yang disebut dgn

exception.

Exception dapat diproses lebih lanjut oleh fungsi-fungsi yang siap

menangani kesalahan.

Proses pelemparan exception disebut dgn throwing exception.

Proses penerimaan exception disebut dengan catch exception.

Contoh Exception:

File yang akan dibuka tidak ada.

Koneksi jaringan putus.

Pembagian bilangan dengan 0

Pengisian elemen array diluar ukuran array

Kegagalan koneksi database

(5)

Common Exception

 ArithmeticException

 Hasil dari operasi divide-by-zero pada integer

 Misal : int i = 12/0;

 NullPointerException

 Mencoba mengakses atribut atau method suatu object padahal object belum dibuat.

 Misal : Date d = null; System.out.println(d.toString());

 NegativeArraySizeException

 Mencoba membuat array dengan ukuran negatif.  ArrayIndexOutOfBoundsException

 Mencoba mengakses elemen array dimana index nya melebihi ukuran array.

Keywords

 try  catch  finally  throwthrows

(6)

Bentuk penggunaan

try{

/* kode yang memungkinkan terjadinya eksepsi }

catch(TipeEksepsi1 obyekEksepsi)1{ /* kode untuk menangani eksepsi1 }

//…

catch(TipeEksepsiN obyekEksepsiN){ /* kode untuk menangani eksepsiN }

finally{

/* kode yang pasti akan dieksekusi setelah blok try catch di atas dieksekusi*/ }

try :

 Blok digunakan untuk menempatkan kode-kode program java yang mengandung kode program yang mungkin melemparkan exception. 

catch :

 Blok digunakan untuk menempatkan kode-kode program java yang digunakan untuk menangani sebuah exception tertentu.

finally :

 Blok digunakan untuk menempatkan kode-kode program yang pasti akan selalu dieksekusi baik terjadi atau tidak terjadi eksepsi

(7)
(8)

Purpose of each exception

Error :

 tipe eksepsi yang tidak ditangani dengan try-catch karena berhubungan dengan java run time system/environment.

 Mengindikasikan bahwa error yang terjadi adalah kritis/fatal error (severe problem) dimana proses recovery sangat sulit dilakukan bahkan tidak mungkin dilakukan.

 Contoh : program running out of memory

Purpose of each exception

Exception:

 Exeption yang sebaiknya ditangani oleh program secara langsung

 Dalam praktek akan lebih banyak menggunakan subclass dari kelas Exception

(9)

UnCheck Exception

Semua eksepsi yang bertipe RuntimeException dan

turunannya tidak harus ditangani secara eksplisit.

Mengindikasikan kesalahan implementasi atau desain

program.

 Contoh : ArrayIndexOutOfBoundsException

Check Exception

Semua tipe eksepsi yang bukan turunan class RuntimeException

merupakan eksepsi yang harus ditangani dengan menggunakan

blok try-catch

Mengindikasikan kesalahan environment.

(10)

Misal terdapat algoritma program:

Fungsi bacaFile  BukaFile  BacaBarisFileSampaiHabis  TutupFile

Masalah

Bagaimana bila ditambahkan program untuk pengecekan

terhadap status pembacaan file?

Bagaimana bila ditambahkan program untuk pengecekan

terhadap status penutupan file?

Maka program akan menjadi sangat panjang dan banyak terdapat

nested if-else.

(11)

Solusi?

Gunakan exception

Bentuk:

try { ……….. } catch (ExceptionType x) { ……….. }

Implementasi

try { Fungsi bacaFile BukaFile BacaBarisFileSampaiHabis TutupFile } catch (KesalahanBukaFile) {

(12)

Try dengan banyak catch

Dapat digunakan beberapa blok catch untuk satu blok try.

Exception dalam satu program bisa mengatasi banyak

exception.

Contoh implementasi:

Misal dalam satu blok try terdapat kemungkinan terjadi:

NullPointerException

IndexOutOfBoundsException

ArithmeticException

try { ……….. } catch (ExceptionType1 x1) { ……….. } catch (ExceptionType2 x2) { ……….. } class DemoEksepsi4{

public static void main(String arg[]){ try{

int x = arg.length; int y = 100/x; int []arr = {91,92}; y = arr[x];

System.out.println("Tidak terjadi eksepsi"); }catch(ArithmeticException e){

System.out.println("Terjadi eksepsi karena pembagian dengan nol"); }catch(ArrayIndexOutOfBoundsException e){

System.out.println("Terjadi eksepsi karena index melebihi kapasitas");

}

System.out.println("Setelah blok try-catch"); }

}

D:\ java DemoEksepsi4

Terjadi eksepsi karena pembagian dengan nol

Setelah blok try-catch

D:\ java DemoEkseps4i Param1 Tidak terjadi eksepsi

(13)

Sekali running, hanya satu block catch yang sesuai dengan obyek

eksepsi yang akan dieksekusi

 Block catch bertipe subclass harus ditulis lebih dulu baru diikuti block catch bertipe superclass

Blok catch dengan tipe data superclas dapat menangani eksepsi

yang sesuai dengan tipe datanya sendiri dan tipe data subclass-nya

class DemoEksepsi5{

public static void main(String arg[]){ try{

int x = arg.length; int y = 100/x; int []arr = {91,92}; y = arr[x];

System.out.println("Tidak terjadi eksepsi"); }catch(ArithmeticException e){

System.out.println("Terjadi eksepsi karena pembagian dengan nol"); }catch(ArrayIndexOutOfBoundsException e){

(14)

public static void main(String arg[]){ try{ int x = arg.length; int y = 100/x; int []arr = {91,92}; y = arr[x];

System.out.println("Tidak terjadi eksepsi"); }catch(Exception e){

System.out.println("Terjadi eksepsi yang tidak diketahui"); }catch(ArithmeticException e){

System.out.println("Terjadi eksepsi karena pembagian dengan nol"); }catch(ArrayIndexOutOfBoundsException e){

System.out.println("Terjadi eksepsi karena index melebihi kapasitas"); }

System.out.println("Setelah blok try-catch"); }

}

Object Exception

 Object exception yang dihasilkan dapat dimanfaatkan untuk

mengetahui lebih lanjut mengenai error atau exception yang terjadi.

(15)

Method yang diwarisi oleh exception:

-

getMessage()

method ini mengembalikan isi pesan untuk menggambarkan exception yang terjadi

 printStackTrace()

method ini menampilkan pesan error dan stack trace ke standard error output stream yang biasanya merupakan konsol window apabila program merupakan program konsol.

 printStackTrace(PrintStream s)

method ini mengembalikan pesan error ke objek PrintStream yang dijadikan parameter. Apabila ingin menampilkan pesan ke konsol, anda dapat menggunakan ystem.out sebagai parameter.

Blok try –

catch bertingkat

try { try { ……….. } catch (Exception x) { ……….. } try { ………..

(16)

Menggunakan keyword “

throw

Secara eksplisit, eksepsi bisa dilempar (throw) oleh suatu program.Bentuk penggunaan:

throw ObyekEksepsi;

ObyekEksepsi disini adalah semua obyek yang merupakan turunan class Throwable.

class LemparEksepsi{

public static void methodLain(){ try{

throw new ArrayIndexOutOfBoundsException(1);

}catch(ArrayIndexOutOfBoundsException e){

System.out.println("Penanganan Eksepsi dlm methodlain()");

throw e;

} }

public static void main(String arg[]){ try{

methodLain();

}catch(ArrayIndexOutOfBoundsException e){

System.out.println("Penanganan Eksepsi dlm method main()"); }

} }

Melempar obyek eksepsi secara eksplisit

(17)

Menggunakan keyword “

throws

Dibutuhkan hanya oleh check exception.

 Digunakan oleh method yang tidak menangani eksepsi sendiri sehingga eksepsi dilempar keluar method.

Semua kemungkinan eksepsi yang terjadi harus didaftar di deklarasi

method.

Blok Try –

Catch - Finally

Blok finally : digunakan untuk mendefinisikan kode program

yang selalu dieksekusi baik ada exception yang terjadi maupun

bila tidak terjadi exception sama sekali.

Bentuk:

try { ………..

(18)

Menggunakan keyword “

finally

Blok finally : digunakan untuk menempatkan kode-kode program yang

pasti akan selalu dieksekusi baik terjadi atau tidak terjadi eksepsi

import java.io.*; class DemoEksepsi8{

public static void methodLain(int i) throws CharConversionException{ System.out.println("Buka file");

try{

System.out.println("Proses file"); if(i==0)

throw new CharConversionException("Test Eksepsi dlm methodLain"); }catch(CharConversionException e){

System.out.println("Penanganan Eksepsi dlm methodLain"); throw e;

}

System.out.println("Tutup File");

}

public static void main(String arg[]){ try{

methodLain(arg.length); }catch(CharConversionException e){

System.out.println("Penanganan Eksepsi dalam method main()"); }

} }

Kode ini tidak akan dieksekusi jika terjadi eksepsi pada blok try

C:/ java DemoEksepsi8 Param1 Buka file

C:/ java DemoEksepsi8 Buka file

(19)

Bila terjadi eksepsi, bagian perintah yang mencetak kalimat TUTUP

FILE tidak tercetak.

 Padahal file yang dibuka harus ditutup kembali.

 Cara termudah adalah menuliskan perintah tutup file disemua kode yg memungkinkan dieksekusi terakhir kali sebelum keluar program.

 Sehingga menulis kode berulang kali

import java.io.*; class DemoEksepsi8{

public static void methodLain(int i) throws CharConversionException{ System.out.println("Buka file");

try{

System.out.println("Proses file"); if(i==0)

throw new CharConversionException("Test Eksepsi dlm methodLain"); }catch(CharConversionException e){

System.out.println("Penanganan Eksepsi dlm methodLain"); throw e;

}finally{

System.out.println("Tutup File"); }

}

public static void main(String arg[]){ try{

(20)

Membuat class exception baru

 Sebuah subclass dari exception dapat dibentuk programmer untuk

mendefinisikan sendiri secara lebih rinci tentang exception yang dapat terjadi.

 Class exception baru ini harus merupakan subclass dari

java.lang.Exception.

 Didalam class baru cukup mendeklarasikan konstruktor yang mungkin akan digunakan.

 Tidak harus mengimplementasikan atau mengoveride method yang dimiliki Throwable sbg superclass tertinggi.

class EksepsiBuatan1 extends Exception{ EksepsiBuatan1(String s){

super(s); }

}

class DemoEksepsi10{

public static void methodLain() throws EksepsiBuatan1{ throw new EksepsiBuatan1("Deskripsi Eksepsi"); }

public static void main(String arg[]){ try{

methodLain(); }catch(EksepsiBuatan1 e){

System.out.println("Terjadi eksepsi - " + e); }

} }

Referensi

Dokumen terkait

Kepuasan pelanggan tidak memiliki pengaruh terhadap loyalitas pelanggan. Sehingga meskipun pelanggan mendapatkan kepuasan atas pelayanan yang diberikan oleh PLN, hal ini

Hasil metode distributed practice kanan untuk uji- t maka didapatkan 2,89 sedangkan t tabel 2,02 jadi t hitung > t tabel (2,89 > 2,02) dan hasil metode distributed

Daftar kata stopword yaitu kumpulan seluruh kata-kata yang sering muncul dan tidak memiliki arti yang disimpan dalam bank kata khusus stopword yang terdiri dari 810

Q: Nilai rata-rata UN murni saya kurang dari yang disyaratkan dan saya tidak memiliki sertifikat JLPT, apakah saya bisa tetap mendaftar.. A:

Saya berharap agar persidangan ini akan berupaya memberi penjelasan tentang matlamat dan cabaran dalam mengubah undang-undang kita bagi membolehkan perlindungan hak asasi

Manfaat yang dirasakan oleh anggota KUM3 dalam peningkatan usaha di. Surabaya ini dapat dilihat dari beberapa hal, yaitu

Adapun kendala-kendala umum yang ditemui PKBM-PKBM di Kabupaten Karimun dalam penyelenggaraan program-programnya, antara lain: kurangnya sarana dan prasarana

Khusus untuk Atlet yang berprestasi dibawah binaan cabang olahraga yang bersangkutan yang terdaftar pada Pengurus Cabang tidak dikenakan pungutan baik biaya masuk maupun biaya