Anda di halaman 1dari 20

Pemrograman Berorientasi

Objek I
Exception

I Ketut Putra Yasa


1

Exception

Dalam Java, runtime error (kesalahan-kesalahan yang terjadi pada saat


program sedang berjalan) direpresentasikan dengan exception.
Eksepsi(Exception) adalah suatu objek yang dibuat pada saat program
mengalami suatu kondisi yang tidak wajar(abnormal).
Ada beberapa contoh dari exception :
>> ArrayIndexOutOfBounds Exception
Terjadi pada saat pengaksesan elemen array yang tidak ada.
>> NumberFormat Exception
Terjadi ketika mencoba passing sebagai parameter bukan angka
dalam method Integer.parseInt

Contoh Exception
1. public class DivByZero {
2. public static void main(String[] args) {
3.
int angka1 = 1;
4.
int angka2 = 0;
5.
int hasil = angka1/angka2;//Salah
6.
System.out.println("Hasil =" + hasil);
7. }
8. }
Didapatkan pesan kesalahan sebagai berikut :
Exception in thread "main"
java.lang.ArithmeticException: / by zero
at DivByZero.main(DivByZero.java:5)

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>
}

Exceptions Catch: try-catch


public class DivByZero {
public static void main(String[] args) {
int angka1 = 1;
int angka2 = 0;
try{
int hasil = angka1/angka2;
System.out.println("Hasil =" + hasil);
}catch(ArithmeticException ae){
System.out.println("KESALAHAN :"+
"Pembaginya Tidak Boleh Nol");
}
}
}
Output :
KESALAHAN :Pembaginya Tidak Boleh Nol
5

Exceptions Catch: try-catch


Contoh Multiple catch

public class MultipleCatch {


public static void hitung(int x, int y){
try{
int c = x/y;
System.out.println("Hasil =" +c);
int[] nilai={1,2,3,4,5};
nilai[5] = 10;
}catch(ArithmeticException ae){
System.out.println("Pembaginya Tidak Boleh 0");
System.out.println(ae.getMessage());
//bersambung
6

Exceptions Catch: try-catch


}catch(ArrayIndexOutOfBoundsException be){
System.out.println("Indek di Luar Rentang");
System.out.println(be.getMessage());
}
}
public static void main(String[] args){
hitung(4,0);//ArithmeticException
System.out.println();
hitung(4,2);//ArrayIndexOutOfBoundsException
}
}
Output :
Pembaginya Tidak Boleh 0
/ by zero
Hasil =2
Indek di Luar Rentang
5
7

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

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

Exceptions Catch: Keyword finally


public class DemoFinally {
private static int i = 0;
public static void main(String[] args) {
while(true){
try{
System.out.print("Pada Saat i ="+i+
" "+":");
if(i++ == 0){
throw new Exception();//Melempar exception
}
System.out.println("Tidak Terjadi Exception");

//bersambung
10

Exceptions Catch: Keyword finally


}catch(Exception e){
System.out.println("Terjadi Exception");
}finally{
System.out.println("Statemen Blok Finally\n");
if(i == 2){
break;//i=2 perulangan berhenti
}
}
}
}
}
Output :
Pada Saat i =0 :Terjadi Exception
Statemen Blok Finally

Pada Saat i =1 :Tidak Terjadi Exception


Statemen Blok Finally
11

Exceptions Throwing : Keyword throw


Java mengijinkan Anda untuk melempar exception:

throw <exception object>;


Contoh:

throw new
ArithmeticException(testing...);

12

Exceptions Throwing : Keyword throw


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

Exceptions Throwing : Keyword throws


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>
}
14

Exceptions Throwing : Keyword throws


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);
}
}
}
15

Class-class Exception dan Hirarki

16

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 = 2/0;
System.out.println(a);
} catch (ArithmeticException e) {
System.out.println(e.getMessage());
} catch (Exception ex) {
System.out.println(ex.getMessage());
}
}
}
17

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 */
}

18

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(input);
} catch (HateStringExp e) {
System.out.println(Eksepsi String!");
}
}
}

19

Referensi :
Sumber : Module JENI 1

20