Pemrograman Berorientasi Object
Apa itu Exception? Singkatan dari Exceptional Events.
Kesalahan (errors) yang terjadi saat runtime, menyebabkan gangguan pada alur eksekusi program.
Contoh
Error pembagian 0
Mengakses elemen di luar jangkauan sebuah array, input yang tidak benar
Membuka file yang tidak ada.
Pada dasarnya, Exception merupakan subkelas dari kelas java.lang.Throwable
Perbedaan antara Class Error dan ClassException di java
Selain class Exception, java.lang.Throwable juga memilikisubclass yaitu class Error
Error Class Untuk menangani error yang muncul pada saat dijalankan ( run-time error) dan Kemunculannya di luar control user disebabkan oleh run-time environment Contoh : out of memory, harddisk crash
Exception class Menunjukkan kondisi yang dapat diterima oleh user program.Umumnya disebabkan oleh beberapa kesalahan pada kode program
Contoh : Eksepsi yg tidak dapat ditangkap
class Exc0 {
public static void main (String args[]) {
int d = 0;
int a = 42 / d;
}
}
belum mengkodekan suatu penangan eksepsi, sehingga penanganan eksepsidefault akan segera dijalankan. Keluaran dari program diatasjava.lang.ArithmeticExpression : /by zeroat Exc0.main (Exc0.java:4)
Menangani Exception
Untuk menangani exception dalam Java, kita gunakanblok try-catch-finally.
Pada dasarnya try digunakan untuk mengeksekusisuatu bagian program, dan jika muncul kesalahan,sistem akan melakukan throw suatu eksepsi yangdapat anda catch berdasarkan tipe eksepsinya, atauyang anda berikan finally dengan penangan default.
try{
//tulis pernyataan yang dapat mengakibatkan exception
//dalam blok ini
}
catch( <exceptionType 1> <varName1> ){
//tulis aksi apa dari program Anda yang dijalankan jika ada
//exception tipe tertentu terjadi
}
. . .
catch( <exceptionType N> <varName N> ){
//tulis aksi apa dari program Anda yang dijalankan jika ada
//exception tipe tertentu terjadi
}
finally{
//tambahkan kode terakhir di sini
}
Exception dilemparkan selama eksekusi dari blok try dapat ditangkap dan
ditangani dalam blok catch. Kode dalam blok finally selalu di-eksekusi.
Try dan Catch Kata kunci try digunakan untuk menentukan suatu blok program yang
harus dijaga terhadap semua eksepsi, setelah blok try masukkan bagiancatch, yang menentukan tipe eksepsi yang akan ditangkap.
class Exc2 {
public static void main (String args[]) {
try {
int d = 0;
int a = 42 / d;
}
catch (ArithmeticException e) {
System.out.println( Division By Zero );
}}}
Outputnya:
Division By Zero
Finally
Blok finally mengandung kode penanganan setelahpenggunaan try dan catch
Blok kode ini selalu tereksekusi walaupun sebuah exception terjadi atau tidak pada blok try.
Blok kode tersebut juga akan menghasilkan nilai true meskipun return, continue ataupun break tereksekusi
aspek kunci tentang sintak dari konstruksi try-catch-finally: Notasi blok bersifat perintah
Setiap blok try, terdapat satu atau lebih blok catch, tetapi hanya satublok finally.
Blok catch dan blok finally harus selalu muncul dalam konjungsidengan blok try, dan diatas urutan Blok try harus diikuti oleh palingsedikit satu blok catch ATAU satu blok finally, atau keduanya.
Setiap blok catch mendefinisikan sebuah penanganan exception.Header dari blok catch harus membawa satu argumen, dimanaexception pada blok tersebut akan ditangani. Exception harus menjadiclass pelempar atau satu dari subclassesnya.
Throw
Disamping menangkap exception
Java juga dapat melempar sebuah exception.
Sintaks pelemparan exception cukup sederhana.
throw <exception object>;
Contoh :class throwDemo {
static void demoProc() {
try {
throw new NullPointerException( demo ); }
catch (NullPointerException e) {
System.out.println( caught inside demoproc );
throw e; }
}
public static void main (String args[]) {
try { demoProc(); }
catch (NullPointerException e) {
System.out.println( recaugt : + e); }
} }Output :
caught inside demoproc
recaught : java.lang.NullPointerException : demo
Throws
Sebuah method dapat menyebabkan sebuah exception namun tidak menangkapnya, maka digunakan keyword throws.
Aturan ini hanya berlaku pada checked exception.
Berikut ini penulisan syntax menggunakan keyword throws :
<type> <methodName> (<parameterList>)
throws <exceptionList> {
<methodBody>
}
Contoh :class ThrowsDemo {
static void procedure () throws IllegalAccessException {
System.out.println( Inside Procedure );
throw new IllegalAccessException( demo );
}
public static void main(String args[]) {
try { procedure(); }
catch (IllegalAccessException e) {
System.out.println( caught + e); }
}} Output :
Inside procedure
caught java.lang.IllegalAccessException : demo
contoh program yang menunjukkan beberapa method yang keluar denganberbagai cara, tidak satupun tanpa mengeksekusi bagian finally-nyA.
class finallyDemo {
static void procA() {
try { System.out.println( Inside procA.. );
throw new RuntimeException( Demo ); }
finally { System.out.println( procA is finally ); }
}
static void procB() {
try { System.out.println( Inside procB.. );
return; }
finally { System.out.println( procB is finally ); }
}
public static void main(String args[]) {
try { procA( ); }
catch (Exception e){ };
procB(); }
}
Output :
Inside procA..
procA is finally
Inside procB..
procB is finally
Top Related