Bahasa Pemrograman 2

advertisement
Bahasa Pemrograman 2
Exception Handling
Exception
Handling
[email protected]
Exception
• EException adalah
ti
d l h sebuah
b h indikasi
i dik i masalah
l h yang muncul saat program dijalankan
• Exception adalah kondisi abnormal yang terjadi
saat program dijalankan
program dijalankan
• Saat
S t program dijalankan
dij l k Æ run‐time
ti
• Exception untukk run‐time error (run‐time error (
management)
Exception
• Exception : eksepsi, problem yang muncul
jjarangg terjadi
j ((infrequently)
q
y)
• Exception perlu ditangani (exception handling)
• Exception handling: memungkinkan
E
i h dli
ki k program tetap berjalan seakan‐akan tidak muncul
masalah
• Fault tolerant : jika
Fault tolerant : jika terjadi masalah program program
tidak berhenti begitu saja
Exception
• Tanpa Exception Handling
Eksekusi berhenti
Tidak
dijalankan
error
• Dengan Exception Handling
Eksekusi tidak berhenti
Execption pseudocode
Execption pseudocode
• Pseudocode
P d d
…
Lakukan proses input
Jika input tidak valid lakukan
error-processing
i
Lakukan proses penghitungan
Jika proses penghitungan gagal
lakukan error-processing
Lakukan proses penampilan hasil
…
Overview
• Pada
d bahasa
b h
pemrograman procedural, error d l
handling ditangani bersamaan dengan proses‐
proses dalam
d l
program yang dibuat
dib t (inline error (i li
handling)
• Inline error handling membuat program sulit
untuk dibaca, dimodifikasi, debugging dan
maintenance
i
• Pada Java, error handling dapat dilakukan
bersamaan atau terpisah dari kode program utama
Overview
• Java Exception: object yang menggambarkan
i
bj
b k
sebuah kondisi eksepsional (exception) pada
suatu
t bagian
b i kode
k d
• Saat terjadi exception, sebuah object yang mewakili exception tersebut dibuat dan
dilemparkan (thrown) dari method dimana
exception tersebut
i
b terjadi
j di
• Method tersebut dapat memilih untuk
menghandle sendiri exception tersebut atau
melemparkannya pada yang lain
Overview
• Exception dapat dihasilkan dari java run‐time y
p dihasilkan secara manual dari
system maupun
kode program
Overview
• Exception yang dihasilkan
i
dih ilk oleh
l h Java biasanya
bi
terjadi karena kesalahan dasar seperti melanggar
k t t
ketentuan‐ketentuan
k t t
d i bahasa
dari
b h
pemrograman
Java, pelanggaran pada batasan‐batasan yang telah didefinisikan dalam Java run‐time
Java run time
• Exception yang dihasilkan secara manual (generated by code) digunakan untuk
melaporkan atau menangkap exception yang terjadi pada suatu method
DivisionByZero Error
DivisionByZero Error
Overview
Muncul Error:
Stack trace:
Stack trace: Exception in thread "main"
java.lang.ArithmeticException:
j
g
p
/ by
y zero
at example01.Main.pembagian(Main.java:18)
at example01.Main.main(Main.java:13)
Java Result: 1
DivByZero with Exception
DivByZero with Exception
Demo Exception Flow
Demo Exception Flow
• Example03
Kapan exception dapat digunakan?
Kapan exception dapat digunakan?
• Exception handling untuk synchronous error
Exception handling untuk synchronous error
– Error yang terjadi saat sebuah perintah dijalankan
(run)
• Tidak dapat digunakan untuk asynchronous
error
Overview
• Synchronous Error : division by zero, out of y
bound array, overflow, invalid method parameter, etc
• Asynchronous Error : Network transfer, mouse clicks, keystrokes, etc Æ yang terjadi secara
paralel dan independen terhadap aliran
kontrol program (program flow control)
Hierarki Java Exception
Java Exception
• Semua Java Exception merupakan keturunan (
(inherits) dari class Exception, baik secara )
p
langsung maupun tidak langsung
Hierarki Java Exception
Java Exception
Hierarki Exception
• Seluruh class yang merupakan turunan dari p
tapi bukan turunan dari p
class Exception
RuntimeException merupakan checked Exception
• Seluruh class yang merupakan turunan dari
class Error merupakan unchecked Exception
class Error
unchecked Exception
Hierarki Exception
• TTurunan dari
d i Throwable
Th
bl ada
d 2, yaitu
2 it Exception
E
ti
dan Error
• Exception: dapat ditangani oleh kode program dan eksekusi program dapat
program dapat dilanjutkan
• EError: terjadi
t j di kesalahan
k l h pada
d Java Virtual J
Vi t l
Machine, kesalahan yang ditimbulkan oleh
environment/system tidak dapat dihandle oleh
environment/system, tidak
program
Hierarki Exception
• Ch
Checked Exception : Java Compiler mengecek kode k dE
ti
J
C
il
kk d
program, apakah suatu method mungkin menghasilkan exception, apakah exception tersebut sudah ditangkap (
(catch) atau dilempar (throws)
)
(
)
– invalid user input, database problems, network outages, absent files
• Unchecked Exception : Java Compiler tidak mengecek apakah suatu kode program menghasilkan exception atau k h
t k d
h ilk
ti
t
tidak
– Berupa logic error
p g
– IllegalArgumentException, NullPointerException, atau IllegalStateException
Unchecked Exception
Unchecked Exception
Penggunaan Java Exception
Java Exception
• TTerdapat
d t 5 keywords:
5k
d
try, catch, finally, throw, throws
try {
…
} catch (Exception e) {
…
}
finally {
…
}
Penggunaan Java Exception
Java Exception
• Dengan try‐catch
try {
…
} catch (Exception e) {
} catch (Exception e) {
…
}
Penggunaan Java Exception
Java Exception
• Dengan
D
t
try‐catch‐finally
t h fi ll
try {
…
} catch (Exception e) {
…
} finally {
…
}
Penggunaan Java Exception
Java Exception
• Block finally : pasti dijalankan dalam semua
j exception atau
p
tidak))
kondisi ((terjadi
• Di
Digunakan
k untukk menanggulangi
l i resource leak (misal: kehabisan memory, deadlock/starvation)
• Contoh: network error, file handle error, etc
Penggunaan Java Exception
Java Exception
Penggunaan Java Exception
Java Exception
• Selain try‐catch‐finally, terdapat 2 keyword lagi:
• throw di
digunakan
k untuk
t k melempar
l
exception
ti
• throws
digunakan untuk mendeklarasikan exception apa
exception apa
saja yang bisa dilempar
Penggunaan Java Exception
Java Exception
• throw
h
melempar
p exception
p
• Bentuknya:
throw ThrowableInstance;
ThrowableInstance: merupakan
ThrowableInstance:
merupakan object dari
object dari
class Throwable atau turunannya
Penggunaan Java Exception
Java Exception
Penggunaan Java Exception
Java Exception
• throws : exception apa saja yang bisa
p oleh suatu method
dilempar
• Bentuk umumnya : type method‐name(parameter‐list) throws
h d
(
li ) h
exception‐list
{
// b d f
// body of method
th d
} Penggunaan Java Exception
Java Exception
Penggunaan Java Exception
Java Exception
• Java menyediakan fasilitas stack‐trace untuk
p
urutan dari terjadinya
j
y exception
p
menampilkan
• EException bisa
i bi terjadi
j di secara berantai
b
i
(Chained Exception)
• Ch
Chained Exception : urutan
i dE
ti
t exception dari
ti d i
method ke method
Penggunaan Java Exception
Java Exception
• Demo
Æ Chained Exception (Example07)
Pembuatan Exception Baru
Exception Baru
• Selain menggunakan Exception yang sudah
y
(
Java), )
didefinisikan oleh library Java (bawaan
anda juga dapat membuat exception sendiri
untuk keperluan tertentu
• Harus merupakan turunan dari class Exception
Pembuatan Exception Baru
Exception Baru
• Misal anda ingin meminta input jargon (
(“client”)
)
• Definisikan sebuah exception baru (misal
namanya: InputJargonException
namanya: InputJargonException
• Exception terjadi apabila inputnya bukan
“client”
Pembuatan Exception Baru
Exception Baru
class InputJargonException
l I
tJ
E
ti extends Exception {
t d E
ti {
private String nama;
InputJargonException(String n) {
InputJargonException(String n) {
nama = n;
}
public String toString() {
public
String toString() {
return "Ini adalah Exception InputJargonException
:" + nama;;
}
}
Pembuatan Exception Baru
Exception Baru
public static String inputHuruf() throws bli t ti St i i
tH f() th
InputJargonException {
Scanner input new Scanner(System in)
Scanner input = new Scanner(System.in);
System.out.print("Masukkan jargon : ");
S i h il = input.next();
String hasil
i
()
System.out.println("Anda memasukkan " + hasil);
if(hasil.equalsIgnoreCase("client") == false)
throw new InputJargonException("Jargon Error");
return hasil;
}
NEXT
• Class Diagram
Download