exception handling · 2018. 11. 28. · membuat objek exception dan melemparkannya –sebagai tanda...

39
Exception Handling BRIGIDA ARIE MINARTINGTYAS, M.KOM

Upload: others

Post on 01-May-2021

10 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Exception Handling · 2018. 11. 28. · membuat objek exception dan melemparkannya –sebagai tanda bahwa error telah terjadi Jika objek exception tidak ditangkap dan ditangani secara

Exception HandlingBRIGIDA ARIE MINARTINGTYAS, M.KOM

Page 2: Exception Handling · 2018. 11. 28. · membuat objek exception dan melemparkannya –sebagai tanda bahwa error telah terjadi Jika objek exception tidak ditangkap dan ditangani secara

Kesalahan sering terjadi padasaat perancangan atau

pemrograman

Jarang sekali sebuah program dibuatdapat berjalan dengan sukses pada

saat pertama sekali dijalankan

Page 3: Exception Handling · 2018. 11. 28. · membuat objek exception dan melemparkannya –sebagai tanda bahwa error telah terjadi Jika objek exception tidak ditangkap dan ditangani secara

• mengakibatkan kesalahan kompilasi.

Syntax Errors

• program menghasilkan keluaran yang tidaksesuai dengan harapan.

Semantic Errors

• kebanyakan mengakibatkan terminasi program secara tidak normal atau bahkan sistem crash

Runtime Errors

Kategori Error

Page 4: Exception Handling · 2018. 11. 28. · membuat objek exception dan melemparkannya –sebagai tanda bahwa error telah terjadi Jika objek exception tidak ditangkap dan ditangani secara

Pembagian bilangan dengan nol.

Akses elemen yang berada di luar indeks

array

Menyimpan elemen data yang tidak

kompatibel

Menggunakan nilai negatif untuk ukuran

array

Mengubah data string menjadi data integer (misal., mengubah

“abc” ke nilai integer).

Banyak lagi …

Contoh Run Time Error

Page 5: Exception Handling · 2018. 11. 28. · membuat objek exception dan melemparkannya –sebagai tanda bahwa error telah terjadi Jika objek exception tidak ditangkap dan ditangani secara

Contoh TanpaError Handling

Page 6: Exception Handling · 2018. 11. 28. · membuat objek exception dan melemparkannya –sebagai tanda bahwa error telah terjadi Jika objek exception tidak ditangkap dan ditangani secara

Contoh denganError Handling

Tradisional

Page 7: Exception Handling · 2018. 11. 28. · membuat objek exception dan melemparkannya –sebagai tanda bahwa error telah terjadi Jika objek exception tidak ditangkap dan ditangani secara

ErrorConditions Setiap program dalam berada dapat

suatu kondisi yang tidak normal

Program yang ‘baik’ harus dapatmenangani kondisi ini.

ExceptionsJava menyediakan suatumekanisme untuk menanganikondisi ini

Page 8: Exception Handling · 2018. 11. 28. · membuat objek exception dan melemparkannya –sebagai tanda bahwa error telah terjadi Jika objek exception tidak ditangkap dan ditangani secara

Exception

• merupakan suatu keadaan yang disebabkan oleh runtime error dalamprogram.

• memungkinkan kesalahan ditanganitanpa harus ‘mengotori’ program (denganrutin yang menangani kesalahan)

• memungkinkan pemisahan penanganankesalahan dengan program utama (main business logic)

Page 9: Exception Handling · 2018. 11. 28. · membuat objek exception dan melemparkannya –sebagai tanda bahwa error telah terjadi Jika objek exception tidak ditangkap dan ditangani secara

Ketika JVM menjumpai error, Java akanmembuat objek exception danmelemparkannya – sebagai tanda bahwa error telah terjadi

Jika objek exception tidak ditangkap danditangani secara tepat, interpreter akanmenampilkan error dan mengakhiri program

Exception Handling

Apabila ingin program menjalankan program yang tersisa, maka objek exception yang dilempar tadi harus ditangkap dan diambiltindakan yang sesuai.

Page 10: Exception Handling · 2018. 11. 28. · membuat objek exception dan melemparkannya –sebagai tanda bahwa error telah terjadi Jika objek exception tidak ditangkap dan ditangani secara

ArithmeticException

ArrayIndexOutOfBoundException

ArrayStoreException

FileNotFoundException

IOException – general I/O failure

NullPointerException – merujuk ke null object

StackOverflowException

StringIndexOutOfBoundException

Exception yang sering terjadi

Page 11: Exception Handling · 2018. 11. 28. · membuat objek exception dan melemparkannya –sebagai tanda bahwa error telah terjadi Jika objek exception tidak ditangkap dan ditangani secara

Throws

• Suatu fungsi dapat memberi tanda suatukesalahan dengan melempar suatu exception

Try, Catch

• Fungsi pemanggil dapat menyerahkan kendalike exception handler dengan menangkap(catching) exception

Finally

• Clean up

Exception di Java

Page 12: Exception Handling · 2018. 11. 28. · membuat objek exception dan melemparkannya –sebagai tanda bahwa error telah terjadi Jika objek exception tidak ditangkap dan ditangani secara

Blok try

Instruksi yang menyebabkanterjadinya exception

Blok catch

Instruksi yang menangani exception

Throwsexception

Object

Penanganan Exception

Page 13: Exception Handling · 2018. 11. 28. · membuat objek exception dan melemparkannya –sebagai tanda bahwa error telah terjadi Jika objek exception tidak ditangkap dan ditangani secara

try {

instruksi yang berpotensi menghasilkan exception

}

catch(tipe_exception e) {

instruksi untuk menangani exception

}

Blok Try - Catch

Page 14: Exception Handling · 2018. 11. 28. · membuat objek exception dan melemparkannya –sebagai tanda bahwa error telah terjadi Jika objek exception tidak ditangkap dan ditangani secara

Letakkan instruksi yang akandiperiksa (berpotensimenghasilkan exception) dalamblok try

Buat satu atau lebih blok catch setelah blok try

• Handlers di-check berdasarkan urutanpenulisan. Letakkan handler yang paling sering digunakan pertamasekali.

• Eksekusi normal dilanjutkan setelah handler yang terakhir

Catch Exception

Page 15: Exception Handling · 2018. 11. 28. · membuat objek exception dan melemparkannya –sebagai tanda bahwa error telah terjadi Jika objek exception tidak ditangkap dan ditangani secara

try {instruksi-1instruksi-2instruksi-3…….

diabaikaninstruksi-n

}catch(Exception e)

{instruksi-catch-1

instruksi-catch-2…..instruksi-catch-4

}

instruksi-lain......

try {instruksi-1instruksi-2instruksi-3…….instruksi-n

}catch(Exception e){

instruksi-catch-1instruksi-catch-2…..instruksi-catch-4

}

instruksi-lain......

Terjadi eksepsi(asumsi instruksi-2 melempar eksepsi)

Tidak terjadi eksepsi

Catch Exception

Page 16: Exception Handling · 2018. 11. 28. · membuat objek exception dan melemparkannya –sebagai tanda bahwa error telah terjadi Jika objek exception tidak ditangkap dan ditangani secara

Contoh TanpaException (1)

Page 17: Exception Handling · 2018. 11. 28. · membuat objek exception dan melemparkannya –sebagai tanda bahwa error telah terjadi Jika objek exception tidak ditangkap dan ditangani secara

Contoh Try Catch (1)

Page 18: Exception Handling · 2018. 11. 28. · membuat objek exception dan melemparkannya –sebagai tanda bahwa error telah terjadi Jika objek exception tidak ditangkap dan ditangani secara

Contoh Tanpa Exception (2)

Page 19: Exception Handling · 2018. 11. 28. · membuat objek exception dan melemparkannya –sebagai tanda bahwa error telah terjadi Jika objek exception tidak ditangkap dan ditangani secara

Contoh Try Catch (2)

Page 20: Exception Handling · 2018. 11. 28. · membuat objek exception dan melemparkannya –sebagai tanda bahwa error telah terjadi Jika objek exception tidak ditangkap dan ditangani secara

Contoh Try Catch (3)

Page 21: Exception Handling · 2018. 11. 28. · membuat objek exception dan melemparkannya –sebagai tanda bahwa error telah terjadi Jika objek exception tidak ditangkap dan ditangani secara

try {

// instruksi

}

catch(Exception-Type1 e)

{

// instruksi untuk menangani exception 1

}

..

..

catch(Exception-TypeN e)

{

// instruksi untuk menangani exception 1

}

Apabila blok try mungkin menimbulkan lebih darisatu exception, maka menggunakan multiple catch

Page 22: Exception Handling · 2018. 11. 28. · membuat objek exception dan melemparkannya –sebagai tanda bahwa error telah terjadi Jika objek exception tidak ditangkap dan ditangani secara

try {

instruksi-1

instruksi-2

instruksi-3

…….

diabaikan

instruksi-n

}

catch(tipe_eksepsi_1 e1)

{

}

catch(tipe_eksepsi_2 e2)

{

}

catch(tipe_eksepsi_3 e3)

{

}

catch(tipe_eksepsi_4 e4)

{

}

....

catch(tipe_eksepsi_n en)

{

}

instruksi-lain

......

try {

instruksi-1

instruksi-2

instruksi-3

…….

instruksi-n

}

catch(tipe_eksepsi_1 e1)

{

}

catch(tipe_eksepsi_2 e2)

{

}

catch(tipe_eksepsi_3 e3)

{

}

catch(tipe_eksepsi_4 e4)

{

}

....

catch(tipe_eksepsi_n en)

{

}

instruksi-lain

......

Multiple Catch

Page 23: Exception Handling · 2018. 11. 28. · membuat objek exception dan melemparkannya –sebagai tanda bahwa error telah terjadi Jika objek exception tidak ditangkap dan ditangani secara

Contoh Multiple Catch

Page 24: Exception Handling · 2018. 11. 28. · membuat objek exception dan melemparkannya –sebagai tanda bahwa error telah terjadi Jika objek exception tidak ditangkap dan ditangani secara

Blok Finally

Menangani setiap exception yang tidakditangkap oleh blok sebelumnya

Blok ini dijalankan tidak peduli apakahexception terjadi atau tidak.

Digunakan untuk melakukan house keeping operation misal menutup file dan mengembalikan system resources

Page 25: Exception Handling · 2018. 11. 28. · membuat objek exception dan melemparkannya –sebagai tanda bahwa error telah terjadi Jika objek exception tidak ditangkap dan ditangani secara

try {

// statements

}

catch( Exception-Type1 e)

{

// statements to process exception 1

}

..

..

finally {

….

}

Blok Finally

Page 26: Exception Handling · 2018. 11. 28. · membuat objek exception dan melemparkannya –sebagai tanda bahwa error telah terjadi Jika objek exception tidak ditangkap dan ditangani secara

Contoh Finally

Page 27: Exception Handling · 2018. 11. 28. · membuat objek exception dan melemparkannya –sebagai tanda bahwa error telah terjadi Jika objek exception tidak ditangkap dan ditangani secara

User Defined Exception

Merupakan turunan Exceptionor Runtime-Exception

Membuat tipe baru untukmemberikan informasidiagnostik yang lebih baik

Perlu mengetahui mekanismethrow suatu objek exception

Page 28: Exception Handling · 2018. 11. 28. · membuat objek exception dan melemparkannya –sebagai tanda bahwa error telah terjadi Jika objek exception tidak ditangkap dan ditangani secara

Throw Exception

• Objek yang di-throw harus merupakanturunan dari kelas Throwable atau kelas-kelas turunannya

• Biasanya diturunkan dari kelas java.lang.Exception

• Kelas yang dibuat (optional) menyediakan 2 konstruktor

• Default : MyException( )

• Argumen string : MyException(String s)

Page 29: Exception Handling · 2018. 11. 28. · membuat objek exception dan melemparkannya –sebagai tanda bahwa error telah terjadi Jika objek exception tidak ditangkap dan ditangani secara

Throw Exception

Page 30: Exception Handling · 2018. 11. 28. · membuat objek exception dan melemparkannya –sebagai tanda bahwa error telah terjadi Jika objek exception tidak ditangkap dan ditangani secara

getMessage( )

toString( )

(class name + message)

printStackTrace( )

Fungsi untuk Pemrosesan Throw Exception

Page 31: Exception Handling · 2018. 11. 28. · membuat objek exception dan melemparkannya –sebagai tanda bahwa error telah terjadi Jika objek exception tidak ditangkap dan ditangani secara

if (condition)

throw new MyException();

atau

if (condition)

throw new MyException(“bla ..bla ..bla”);

Throw Exception

Page 32: Exception Handling · 2018. 11. 28. · membuat objek exception dan melemparkannya –sebagai tanda bahwa error telah terjadi Jika objek exception tidak ditangkap dan ditangani secara

class MyException extends Exception

{

MyException(String message)

{

super(message);

// pass to superclass if parameter is not handled by used defined exception

}

}

class TestMyException {

try {

throw new MyException(“This is error message”);

}

catch(MyException e)

{

System.out.println(“Message is: “+e.getMessage());

}

}

User Defined Exception- Format Standard -

Page 33: Exception Handling · 2018. 11. 28. · membuat objek exception dan melemparkannya –sebagai tanda bahwa error telah terjadi Jika objek exception tidak ditangkap dan ditangani secara
Page 34: Exception Handling · 2018. 11. 28. · membuat objek exception dan melemparkannya –sebagai tanda bahwa error telah terjadi Jika objek exception tidak ditangkap dan ditangani secara
Page 35: Exception Handling · 2018. 11. 28. · membuat objek exception dan melemparkannya –sebagai tanda bahwa error telah terjadi Jika objek exception tidak ditangkap dan ditangani secara

public Circle(double centreX, double centreY, double radius){

x = centreX; y = centreY; r = radius;

}

User Defined Exception

Bagaimana memastikan bahwa radius tidak nol atau negatif?

Page 36: Exception Handling · 2018. 11. 28. · membuat objek exception dan melemparkannya –sebagai tanda bahwa error telah terjadi Jika objek exception tidak ditangkap dan ditangani secara
Page 37: Exception Handling · 2018. 11. 28. · membuat objek exception dan melemparkannya –sebagai tanda bahwa error telah terjadi Jika objek exception tidak ditangkap dan ditangani secara
Page 38: Exception Handling · 2018. 11. 28. · membuat objek exception dan melemparkannya –sebagai tanda bahwa error telah terjadi Jika objek exception tidak ditangkap dan ditangani secara
Page 39: Exception Handling · 2018. 11. 28. · membuat objek exception dan melemparkannya –sebagai tanda bahwa error telah terjadi Jika objek exception tidak ditangkap dan ditangani secara