Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

Exception dan Assertion

Presentasi serupa


Presentasi berjudul: "Exception dan Assertion"— Transcript presentasi:

1 Exception dan Assertion

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

3 Topik Melempar Exception Kategori Exception Kata kunci throw
Kata kunci throws Kategori Exception Class-class dan hirarki Exception Checked dan Unchecked Exception User-Defined Exception

4 Topik Apa yang dimaksud dengan Assertion?
Mengaktifkan dan Menonaktifkan Assertion Sintaks Assertion

5 EXCEPTION Error pembagian 0
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.

6 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

7 Class Error dan Exception
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

8 Contoh Exception class DivByZero {
public static void main(String args[]) { System.out.println(3/0); System.out.println(“Pls. print me.”); }

9 Contoh Exception Menampilkan deskripsi exception
didapatkan pesan kesalahan sebagai berikut Exception in thread "main" java.lang.ArithmeticException: / by zero at DivByZero.main(DivByZero.java:3) Default handler Menampilkan deskripsi exception Menampilkan stack trace Hirarki method dimana exception terjadi Menghentikan program secara paksa

10 Exceptions Catch: try-catch
Sintaks: try { <code to be monitored for exceptions> } catch (<ExceptionType1> <ObjName>) { <handler if ExceptionType1 occurs> } ... } catch (<ExceptionTypeN> <ObjName>) { <handler if ExceptionTypeN occurs>

11 Exceptions Catch: try-catch
class DivByZero { public static void main(String args[]) { try { System.out.println(3/0); System.out.println(“Please print me.”); } catch (ArithmeticException exc) { //Dibagi dengan 0 -> ArithmeticException System.out.println(exc); } System.out.println(“After exception.”);

12 Exceptions Catch: try-catch
Contoh Multiple catch class MultipleCatch { public static void main(String args[]) { try { int den = Integer.parseInt(args[0]); System.out.println(3/den); } catch (ArithmeticException exc) { System.out.println(“Divisor was 0.”); } catch (ArrayIndexOutOfBoundsException exc2) { System.out.println(“Missing argument.”); } System.out.println(“After exception.”);

13 Exceptions Catch: try-catch
Nested try class NestedTryDemo { public static void main(String args[]){ try { int a = Integer.parseInt(args[0]); int b = Integer.parseInt(args[1]); System.out.println(a/b); } catch (ArithmeticException e) { System.out.println(“Div by zero error!"); } //bersambung...

14 Exceptions Catch: try-catch
} catch (ArrayIndexOutOfBoundsException) { System.out.println(“Need parameters!"); }

15 Exceptions Catch: try-catch
Nested trys dengan method-method class NestedTryDemo2 { static void nestedTry(String args[]) { try { int a = Integer.parseInt(args[0]); int b = Integer.parseInt(args[1]); System.out.println(a/b); } catch (ArithmeticException e) { System.out.println("Div by zero error!"); } //bersambung...

16 Exceptions Catch: try-catch
public static void main(String args[]){ try { nestedTry(args); } catch (ArrayIndexOutOfBoundsException e) { System.out.println("Need 2 parameters!"); }

17 Exceptions Catch: Keyword finally
Sintaks: try { <code to be monitored for exceptions> } catch (<ExceptionType1> <ObjName>) { <handler if ExceptionType1 occurs> } ... } finally { <code to be executed before the try block ends> } Mengandung kode penanganan setelah penggunaan try dan catch

18 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

19 Exceptions Catch: Keyword finally
class FinallyDemo { static void myMethod(int n) throws Exception{ try { switch(n) { case 1: System.out.println("1st case"); return; case 3: System.out.println("3rd case"); throw new RuntimeException("3!"); case 4: System.out.println("4th case"); throw new Exception("4!"); case 2: System.out.println("2nd case"); } //bersambung...

20 Exceptions Catch: Keyword finally
} catch (RuntimeException e) { System.out.print("RuntimeException: "); System.out.println(e.getMessage()); } finally { System.out.println("try-block entered."); } //bersambung...

21 Exceptions Catch: Keyword finally
public static void main(String args[]){ for (int i=1; i<=4; i++) { try { FinallyDemo.myMethod(i); } catch (Exception e){ System.out.print("Exception caught: "); System.out.println(e.getMessage()); } System.out.println();

22 Exceptions Throwing : Keyword throw
Java mengijinkan Anda untuk melempar exception: throw <exception object>; Contoh: throw new ArithmeticException(“testing...”);

23 Exceptions Throwing: Keyword throw
class ThrowDemo { public static void main(String args[]){ String input = “invalid input”; try { if (input.equals(“invalid input”)) { throw new RuntimeException("throw demo"); } else { System.out.println(input); } System.out.println("After throwing"); } catch (RuntimeException e) { System.out.println("Exception caught:+e);

24 Exceptions Throwing : Keyword throw
Sebuah method diperlukan untuk menangkap ataupun mendaftar seluruh exceptions yang mungkin terjadi Kecuali untuk Error atau RuntimeException, 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> <methodName> (<parameterList>) throws <exceptionList> { <methodBody> }

25 Exceptions Throwing: Keyword throw
class ThrowingClass { static void meth() throws ClassNotFoundException { throw new ClassNotFoundException ("demo"); } class ThrowsDemo { public static void main(String args[]) { try { ThrowingClass.meth(); } catch (ClassNotFoundException e) { System.out.println(e);

26 Class-class Exception dan Hirarki

27 Class-class Exception dan Hirarki
catch lebih dari satu harus berurutan dari subclass ke superclass. class MultipleCatchError { public static void main(String args[]){ try { int a = Integer.parseInt(args [0]); int b = Integer.parseInt(args [1]); System.out.println(a/b); } catch (Exception ex) { } catch (ArrayIndexOutOfBoundsException e) { }

28 Checked dan Unchecked Exceptions
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 RuntimeException Subclass-subclassnya Mengatasi semua exception-exception ini mungkin membuat program kacau dan mungkin menyusahkan programmer.

29 User-Defined Exceptions
Membuat exceptions Anda sendiri Membuat sebuah class yang extends terhadap RuntimeException atau class Exception Modifikasi class Members dan constructors dapat ditambahkan pada class Contoh: class HateStringExp extends RuntimeException { /* Tidak ada penambahan anggota atau construktor sedikitpun */ }

30 User-Defined Exceptions
Menggunakan user-defined exceptions class TestHateString { public static void main(String args[]) { String input = "invalid input"; try { if (input.equals("invalid input")){ throw new HateStringExp(); } System.out.println("Accept string."); } catch (HateStringExp e) { System.out.println("Hate string!”);

31 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 AssertionError akan diberikan User memiliki pilihan untuk menghidupkan atau mematikannya pada saat runtime

32 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 MyProgram.java Tanpa fitur assertion: javac MyProgram.java Mengaktifkan assertions: Menggunakan –enableassertions atau –ea switch. java –enableassertions MyProgram

33 Sintaks Assertion assert <expression1>; dimana
Dua bentuk: Bentuk yang lebih sederhana: assert <expression1>; dimana <expression1> adalah kondisi assertion bernilai true Bentuk Lain: assert <expression1> : <expression2>; <expression1> adalah kondisi yang bernilai true <expression2> adalah informasi yang membantu pemeriksaan mengapa program mengalami kesalahan

34 Sintaks Assertion class AgeAssert {
public static void main(String args[]) { int age = Integer.parseInt(args[0]); assert(age>0); /* jika usia sifatnya valid (contoh, age>0) */ if (age >= 18) { System.out.println(“You're adult”); }

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


Download ppt "Exception dan Assertion"

Presentasi serupa


Iklan oleh Google