EXCEPTION DAN ASSERTION TOPIK Apa yang dimaksud dengan

  • Slides: 35
Download presentation
EXCEPTION DAN ASSERTION

EXCEPTION DAN ASSERTION

TOPIK � Apa yang dimaksud dengan Exception? � � Pendahuluan Class-class Error dan Exception

TOPIK � Apa yang dimaksud dengan Exception? � � Pendahuluan Class-class Error dan Exception Contoh Menangkap Exception � � Pernyataan try-catch Kata kunci finally

TOPIK � Melempar Exception � � � Kata kunci throws Kategori Exception � �

TOPIK � Melempar Exception � � � Kata kunci throws Kategori Exception � � � Class-class dan hirarki Exception Checked dan Unchecked Exception User-Defined Exception

TOPIK � Assertion �Apa yang dimaksud dengan Assertion? �Mengaktifkan dan Menonaktifkan Assertion �Sintaks Assertion

TOPIK � Assertion �Apa yang dimaksud dengan Assertion? �Mengaktifkan dan Menonaktifkan Assertion �Sintaks Assertion

EXCEPTION � Definisi: � Event-event Exceptional � Error-error yang mungkin muncul selama runtime �

EXCEPTION � Definisi: � Event-event Exceptional � Error-error yang mungkin muncul selama runtime � Menyebabkan program yang berjalan secara normal menjadi terganggu. � Contoh -contoh : � � � Error pembagian 0 Mengakses elemen di luar jangkauan sebuah array Input yang sifatnya invalid Hard disk crash Membuka file yang tidak ada Menyelesaikan masalah tumpukan memori.

CLASS ERROR DAN EXCEPTION � Class Throwable � Class Root dari class-class exception �

CLASS ERROR DAN EXCEPTION � Class Throwable � Class Root dari class-class exception � Subclass-subclass Immediate � Error � Exception � Class Exception � menunjukkan kondisi yang dapat diterima oleh user program � Umumnya disebabkan oleh beberapa kesalahan pada kode program � Contoh-contoh � Pembagian oleh 0 � Error di luar jangkauan array

CLASS ERROR DAN EXCEPTION � Class Error � digunakan oleh Java run-time untuk menangani

CLASS ERROR DAN EXCEPTION � Class Error � digunakan oleh Java run-time untuk menangani error yang muncul pada saat dijalankan � Secara umum hal ini di luar control user karena kemunculannya disebabkan oleh run -time environment � Contoh-contoh � Out of memory errors � Harddisk crash

1 2 3 4 5 6 CONTOH EXCEPTION class Div. By. Zero { public

1 2 3 4 5 6 CONTOH EXCEPTION class Div. By. Zero { public static void main(String args[]) { System. out. println(3/0); System. out. println(“Pls. print me. ”); } }

CONTOH EXCEPTION � didapatkan pesan kesalahan sebagai berikut Exception in thread "main" java. lang.

CONTOH EXCEPTION � didapatkan pesan kesalahan sebagai berikut Exception in thread "main" java. lang. Arithmetic. Exception: / by zero at Div. By. Zero. main(Div. By. Zero. java: 3) � Default handler �Menampilkan �Hirarki deskripsi exception stack trace method dimana exception terjadi �Menghentikan program secara paksa

EXCEPTIONS CATCH: TRY-CATCH � Sintaks: try { <code to be monitored for exceptions> }

EXCEPTIONS CATCH: TRY-CATCH � Sintaks: try { <code to be monitored for exceptions> } catch (<Exception. Type 1> <Obj. Name>) { <handler if Exception. Type 1 occurs> }. . . } catch (<Exception. Type. N> <Obj. Name>) { <handler if Exception. Type. N occurs> }

EXCEPTIONS CATCH: TRY-CATCH class Div. By. Zero { 2 public static void main(String args[])

EXCEPTIONS CATCH: TRY-CATCH class Div. By. Zero { 2 public static void main(String args[]) { 3 try { 4 System. out. println(3/0); 5 System. out. println(“Please print me. ”); 6 } catch (Arithmetic. Exception exc) { 7 //Dibagi dengan 0 -> Arithmetic. Exception 8 System. out. println(exc); 9 } 10 System. out. println(“After exception. ”); 11 } 12 } 1

EXCEPTIONS CATCH: TRY-CATCH � Contoh Multiple catch 1 class Multiple. Catch { 2 public

EXCEPTIONS CATCH: TRY-CATCH � Contoh Multiple catch 1 class Multiple. Catch { 2 public static void main(String args[]) { 3 try { 4 int den = Integer. parse. Int(args[0]); 5 System. out. println(3/den); 6 } catch (Arithmetic. Exception exc) { 7 System. out. println(“Divisor was 0. ”); 8 } catch (Array. Index. Out. Of. Bounds. Exception exc 2) { 9 System. out. println(“Missing argument. ”); 10 } 11 System. out. println(“After exception. ”); 12 } 13 }

EXCEPTIONS CATCH: TRY-CATCH � Nested try 1 class Nested. Try. Demo { 2 public

EXCEPTIONS CATCH: TRY-CATCH � Nested try 1 class Nested. Try. Demo { 2 public static void main(String args[]){ 3 try { 4 int a = Integer. parse. Int(args[0]); 5 try { 6 int b = Integer. parse. Int(args[1]); 7 System. out. println(a/b); 8 } catch (Arithmetic. Exception e) { 9 System. out. println(“Div by zero error!"); 10 } 11 //bersambung. . .

EXCEPTIONS CATCH: TRY-CATCH 11 { 12 13 14 15 } } catch (Array. Index.

EXCEPTIONS CATCH: TRY-CATCH 11 { 12 13 14 15 } } catch (Array. Index. Out. Of. Bounds. Exception) System. out. println(“Need 2 parameters!"); } }

EXCEPTIONS CATCH: TRY-CATCH � Nested trys dengan method-method 1. class Nested. Try. Demo 2

EXCEPTIONS CATCH: TRY-CATCH � Nested trys dengan method-method 1. class Nested. Try. Demo 2 { 2. static void nested. Try(String args[]) { 3. try { 4. int a = Integer. parse. Int(args[0]); 5. int b = Integer. parse. Int(args[1]); 6. System. out. println(a/b); 7. } catch (Arithmetic. Exception e) { 8. System. out. println("Div by zero error!"); 9. } 10. } 11. //bersambung. . .

EXCEPTIONS CATCH: TRY-CATCH 12. 13. 14. 15. e) { public static void main(String args[]){

EXCEPTIONS CATCH: TRY-CATCH 12. 13. 14. 15. e) { public static void main(String args[]){ try { nested. Try(args); } catch (Array. Index. Out. Of. Bounds. Exception System. out. println("Need 2 parameters!"); 17. } 18. } 19. } 16.

EXCEPTIONS CATCH: KEYWORD FINALLY � Sintaks: try { <code to be monitored for exceptions>

EXCEPTIONS CATCH: KEYWORD FINALLY � Sintaks: try { <code to be monitored for exceptions> } catch (<Exception. Type 1> <Obj. Name>) { <handler if Exception. Type 1 occurs> }. . . } finally { <code to be executed before the try block ends> } � Mengandung kode penanganan setelah penggunaan try dan catch

EXCEPTIONS CATCH: KEYWORD FINALLY � Kode selalu dieksekusi meskipun dengan skenario berbeda : �

EXCEPTIONS CATCH: KEYWORD FINALLY � Kode selalu dieksekusi meskipun dengan skenario berbeda : � Proses keluar secara paksa menggunakan return, pernyataan continue atau break. � Penyelesaian secara normal � Menangkap lemparan exception �Exception akan dilempar dan ditangkap dalam sebuah method � Tidak menangkap lemparan exception �Lemparan Exception belum dispesifikasikan dalam beberapa baris catch dalam method tersebut

EXCEPTIONS CATCH: KEYWORD FINALLY 1 2 3 4 5 6 7 8 9 10

EXCEPTIONS CATCH: KEYWORD FINALLY 1 2 3 4 5 6 7 8 9 10 11 12 13 class Finally. Demo { static void my. Method(int n) throws Exception{ try { switch(n) { case 1: System. out. println("1 st case"); return; case 3: System. out. println("3 rd case"); throw new Runtime. Exception("3!"); case 4: System. out. println("4 th case"); throw new Exception("4!"); case 2: System. out. println("2 nd case"); } //bersambung. . .

EXCEPTIONS CATCH: KEYWORD FINALLY 14 15 16 17 18 19 20 21 } catch

EXCEPTIONS CATCH: KEYWORD FINALLY 14 15 16 17 18 19 20 21 } catch (Runtime. Exception e) { System. out. print("Runtime. Exception: "); System. out. println(e. get. Message()); } finally { System. out. println("try-block entered. "); } } //bersambung. . .

EXCEPTIONS CATCH: KEYWORD FINALLY public static void main(String args[]){ for (int i=1; i<=4; i++)

EXCEPTIONS CATCH: KEYWORD FINALLY public static void main(String args[]){ for (int i=1; i<=4; i++) { try { Finally. Demo. my. Method(i); } catch (Exception e){ System. out. print("Exception caught: "); System. out. println(e. get. Message()); } System. out. println(); } } 22 23 24 25 26 27 28 29 30 31 32 33 }

� � EXCEPTIONS THROWING : KEYWORD THROW Java mengijinkan Anda untuk melempar exception: throw

� � EXCEPTIONS THROWING : KEYWORD THROW Java mengijinkan Anda untuk melempar exception: throw <exception object>; Contoh: throw new Arithmetic. Exception(“testing. . . ”);

1 2 3 4 5 6 7 8 9 10 11 12 13 14

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 EXCEPTIONS THROWING: KEYWORD THROW class Throw. Demo { public static void main(String args[]){ String input = “invalid input”; try { if (input. equals(“invalid input”)) { throw new Runtime. Exception("throw demo"); } else { System. out. println(input); } System. out. println("After throwing"); } catch (Runtime. Exception e) { System. out. println("Exception caught: +e); } } }

EXCEPTIONS THROWING : KEYWORD THROW � Sebuah method diperlukan untuk menangkap ataupun mendaftar seluruh

EXCEPTIONS THROWING : KEYWORD THROW � Sebuah method diperlukan untuk menangkap ataupun mendaftar seluruh exceptions yang mungkin terjadi � Kecuali untuk Error atau Runtime. Exception, atau subclass-subclass nya � Jika sebuah method dapat menyebabkan sebuah exception namun tidak menangkapnya, maka digunakan keyword throws � Aturan ini hanya berlaku pada checked exception � Sintaks: <type> <method. Name> (<parameter. List>) throws <exception. List> { <method. Body> }

EXCEPTIONS THROWING: KEYWORD THROW 1 2 3 4 5 6 7 8 9 10

EXCEPTIONS THROWING: KEYWORD THROW 1 2 3 4 5 6 7 8 9 10 11 12 13 14 class Throwing. Class { static void meth() throws Class. Not. Found. Exception { throw new Class. Not. Found. Exception ("demo"); } } class Throws. Demo { public static void main(String args[]) { try { Throwing. Class. meth(); } catch (Class. Not. Found. Exception e) { System. out. println(e); } } }

CLASS-CLASS EXCEPTION DAN HIRARKI

CLASS-CLASS EXCEPTION DAN HIRARKI

CLASS-CLASS EXCEPTION DAN HIRARKI catch lebih dari satu harus berurutan dari subclass ke superclass.

CLASS-CLASS EXCEPTION DAN HIRARKI catch lebih dari satu harus berurutan dari subclass ke superclass. � 1 2 3 4 5 6 7 8 9 10 11 class Multiple. Catch. Error { public static void main(String args[]){ try { int a = Integer. parse. Int(args [0]); int b = Integer. parse. Int(args [1]); System. out. println(a/b); } catch (Exception ex) { } catch (Array. Index. Out. Of. Bounds. Exception e) { } } }

CHECKED DAN UNCHECKED EXCEPTIONS � Checked Exception � Compiler memeriksa keseluruhan program apakah menangkap

CHECKED DAN UNCHECKED EXCEPTIONS � Checked Exception � Compiler memeriksa keseluruhan program apakah menangkap atau mendaftar exception yang terjadi dalam sintax throws � Jika tidak, error compiler akan terjadi � Unchecked Exception � Tidak berupa compile-time checking dalam penanganan exceptions � Class-class exception Built-in unchecked � Error � Runtime. Exception � Subclass-subclassnya � Mengatasi semua exception-exception ini mungkin membuat program kacau dan mungkin menyusahkan programmer.

USER-DEFINED EXCEPTIONS � Membuat exceptions Anda sendiri � Membuat sebuah class yang extends terhadap

USER-DEFINED EXCEPTIONS � Membuat exceptions Anda sendiri � Membuat sebuah class yang extends terhadap Runtime. Exception atau class Exception � Modifikasi class �Members class � dan constructors dapat ditambahkan pada Contoh: 1 class Hate. String. Exp extends Runtime. Exception { 2 /* Tidak ada penambahan anggota atau construktor sedikitpun */ 3 }

USER-DEFINED EXCEPTIONS � Menggunakan user-defined exceptions 1 class Test. Hate. String { 2 public

USER-DEFINED EXCEPTIONS � Menggunakan user-defined exceptions 1 class Test. Hate. String { 2 public static void main(String args[]) { 3 String input = "invalid input"; 4 try { 5 if (input. equals("invalid input")){ 6 throw new Hate. String. Exp(); 7 } 8 System. out. println("Accept string. "); 9 } catch (Hate. String. Exp e) { 10 System. out. println("Hate string!”); 11 } 12 } 13 }

ASSERTIONS � Memungkinkan programmer untuk menemukan sebuah asumsi terhadap suatu masalah � Contoh :

ASSERTIONS � Memungkinkan programmer untuk menemukan sebuah asumsi terhadap suatu masalah � Contoh : bulan � Extension dari comments dimana pernyataan yang menyatakan informasi kepada pembaca kode dalam keadaan yang bermacam-macam seharusnya merasa puas � Jalannya program menginformasikan kepada Anda apakah Assertion yang dibuat sudah benar atau belum � Jika sebuah assertion tidak benar, sebuah Assertion. Error akan diberikan User memiliki pilihan untuk menghidupkan atau mematikannya pada saat runtime �

� � � MENGAKTIFKAN DAN MENONAKTIFKAN ASSERTIONS Program dengan assertions mungkin tidak bekerja dengan

� � � MENGAKTIFKAN DAN MENONAKTIFKAN ASSERTIONS Program dengan assertions mungkin tidak bekerja dengan baik jika digunakan oleh clients tidak memanfaatkan assertions yang telah digunakan dalam kode. Proses Kompilasi � Dengan fitur assertion: javac –source 1. 4 My. Program. java � Tanpa fitur assertion: javac My. Program. java Mengaktifkan assertions: � Menggunakan –enableassertions atau –ea switch. java –enableassertions My. Program

SINTAKS ASSERTION � Dua bentuk: � Bentuk yang lebih sederhana: assert <expression 1>; dimana

SINTAKS ASSERTION � Dua bentuk: � Bentuk yang lebih sederhana: assert <expression 1>; dimana �<expression 1> adalah kondisi assertion bernilai true � Bentuk Lain: assert <expression 1> : <expression 2>; dimana �<expression 1> adalah kondisi yang bernilai true �<expression 2> adalah informasi yang membantu pemeriksaan mengapa program mengalami kesalahan

SINTAKS ASSERTION 4 class Age. Assert { public static void main(String args[]) { int

SINTAKS ASSERTION 4 class Age. Assert { public static void main(String args[]) { int age = Integer. parse. Int(args[0]); assert(age>0); 5 /* jika usia sifatnya valid (contoh, age>0) */ 1 2 3 if (age >= 18) { System. out. println(“You're adult”); } 6 7 8 9 10 } }

KESIMPULAN � Exception � Definisi � try, catch dan finally � throw dan throws

KESIMPULAN � Exception � Definisi � try, catch dan finally � throw dan throws � Class-class Throwable, Exception, Error � Exception-exception Checked dan Unchecked � User-Defined Exceptions � Assertion � Definisi � Mengaktifkan dan menonaktifkan Assertions � Sintaks Assertion