Penanganan Eksepsi Pada Java

Eksepsi java yaitu keadaan tidak normal yang muncul pada suatu penggalan jadwal pada dikala dijalankan. Penanganan eksepsi di java membawa pengelolaan kesalahan jadwal dikala dijalankan kedalam orientasi-objek. Eksepsi java yaitu objek yang menjelaskan suatu keadaan eksepsi yang muncul pada suatu penggalan program.

Saat suatu keadaan eksepsi muncul, suatu objek exception dibentuk dan dimasukkan ke dalam method yang menyebabkan eksepsi. Method tersebut sanggup dipilih untuk menangani eksepsi menurut tipe tertentu. Method ini juga menjaga semoga tidak keluar terlalu dini melalui suatu eksepsi, dan mempunyai suatu blok jadwal yang dijalankan sempurna sebelum suatu eksepsi menyebabkan metodenya kembali ke pemanggil.

Eksepsi sanggup muncul tidak beraturan dalam suatu method, atau sanggup juga dibentuk secara manual dan nantinya melaporkan sejumlah keadaan kesalahan ke method yang memanggil.


Dasar-dasar penanganan Eksepsi
 
Penanganan eksepsi pada java diatur dengan lima kata kunci : try, catch, throw, throws dan finally. Pada dasarnya try dipakai untuk mengeksekusi suatu penggalan program, dan bila muncul kesalahan, sistem akan melaksanakan throw suatu eksepsi yang sanggup anda catch menurut tipe eksepsinya, atau yang anda berikan finally dengan penangan default.
 
Berikut ini bentuk dasar penggalan penanganan eksepsi :
try {
// Block of Code
}
catch (ExceptionType1 e) {
// Exception Handler for ExceptionType1
} catch (ExceptionType2 e) {
// Exception Handler for ExceptionTYpe2
throw (e); // re-throw the Exception…
}
finally {
}



Tipe Eksepsi
Dipuncak hirarki class eksepsi terdapat satu class yang disebut throwable. Class ini dipakai untuk merepresentasikan semua keadaan ekasepsi. Setiap ExceptionType pada bentuk umum diatas yaitu subclass dari throwable.
 
Dua subclass eksklusif throwable didefinisikan untuk membagi class throwable menjadi dua cabang yang berbeda. Satu, class Exception, dipakai untuk keadaan eksepsi yang harus ditangkap oleh jadwal yang kita buat. Sedangkan yang lain diperlukan sanggup menangkap class yang kita subclasskan untuk menghasilkan keadaan eksepsi.
Cabang kedua throwable yaitu class error, yang mendefinisikan keadaan yang tidak diperlukan untuk ditangkap dalam lingkungan normal.
Eksepsi Yang Tidak Dapat Ditangkap
Obyek eksepsi secara otomatis dihasilkan oleh runtime java untuk menanggapi suatu keadaan eksepsi. Perhatikan pola berikut :
class Exc0 {
public static void main (Stinr args[]) {
int d = 0;
int a = 42 / d;
}
}
 

Saat runtime java mencoba meng-eksekusi pembagian, akan terlihat bahwa pembaginya yaitu nol, dan akan membentuk objek eksepsi gres yang menyebabkan jadwal terhenti dan harus berurusan dengan keadaan kesalahan tersebut. Kita belum mengkodekan suatu penangan eksepsi, sehingga penanganan eksepsi default akan segera dijalankan. Keluaran dari jadwal diatas :
 
java.lang.ArithmeticExpression : /by zero
at Exc0.main (Exc0.java:4)
Berikut yaitu pola lainnya dari eksepsi :
class Exc1 {
static void subroutine() {
int d = 0;
int a = 42 / d;
}
public static void main (Stinr args[]) {
Exc1.subroutine();
}
}
Output-nya :
java.lang.ArithmeticException : / by zero
at Exc1.subroutine(Exc1.java :4)
at Exc1.main(Exc1.java : 7)



Try dan Catch
Kata kunci try dipakai untuk memilih suatu blok jadwal yang harus dijaga terhadap semua eksepsi, sesudah blok try masukkan penggalan catch, yang memilih tipe eksepsi yang akan ditangkap. Perhatikan pola berikut :
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);
}
}
}

 

Throw
Pernyataan throw dipakai untuk secara eksplisit melemparkan suatu eksepsi. Pertama kita harus mendapat penanganan dalam suatu instance throwable, melalui suatu parameter kedalam penggalan catch, atau dengan membuatnya memakai operator new. Bentuk umum pernyataan throw :
throw ThrowableInstance;
 
Aliran sanksi akan segera terhenti sesudah pernyataan throw, dan pernyataan selanjutnya tidak akan dicapai. Blok try terdekat akan diperiksa untuk melihat bila telah mempunyai penggalan catch yang cocok dengan tipe instance Throwable. Jika tidak ditemukan yang cocok, maka pengaturan dipindahkan ke pernyataan tersebut. Jika tidak, maka blok pernyataan try selanjutnya diperiksa, begitu seterusnya hingga penanganan eksepsi terluar menghentikan jadwal dan mencetak penelusuran semua tumpukan hingga pernyataan throw. 
 
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
Kata kunci throws dipakai untuk mengenali daftar eksepsi yang mungkin di-throw oleh suatu method. Jika tipe eksepsinya yaitu error, atau RuntimeException, atau suatu subclassnya, aturan ini tidak berlaku, sebab tidak diperlukan sebagai penggalan normal dari kerja program.
Jika suatu method secara eksplisit men-throws suatu intans dari Exception atau subclassnya, diluar RuntimeException, kita harus mendeklarasikan tipenya dengan pernyataan throws. ini mendefinisikan ulang deklarasi method sebelumnya dengan sintaks sbb :
 
type method-name (arg-list) throws exception-list { }
Contoh :
class ThrowsDemo {
static void procedure () thorws 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



Finally
Saat suatu eksepsi dilemparkan, alur jadwal dalam suatu method menciptakan jalur yang cenderung tidak linier melalui method tersebut, melompati baris-baris tertentu, bahkan mungkin akan keluar sebelum waktunya pada perkara dimana tidak ada penggalan catch yang cocok. Kadang-kadang perlu dipastikan bahwa penggalan jadwal yang diberikan akan berjalan, tidak perduli eksepsi apa yang terjadi dan ditangkap. Kata kunci finally sanggup dipakai untuk memilih penggalan jadwal menyerupai itu.
 
Setiap try membutuhkan sekurang-kurangnya satu penggalan catch atau finally yang cocok. Jika kita tidak mendapat penggalan catch yang cocok, maka penggalan finally akan dihukum sebelum tamat program, atau setiap kali suatu method akan kembali ke pemanggilnya, melalui eksepsi yang tidak sanggup ditangkap, atau melalui pernyataan return, penggalan finally akan dihukum sebelum kembali ke method kembali.
Berikut yaitu pola jadwal yang mengatakan beberapa method yang keluar dengan banyak sekali cara, tidak satu pun tanpa mengeksekusi penggalan finally-nyA.
 
class finallyDemo {
static void proA() {
try {
System.out.println(“Inside procA..”);
throw new RuntimeException(“Demo”);
}
finally {
System.out.println(“procA is finally”);
}
}
static void proB() {
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

Komentar

Postingan populer dari blog ini

Edit Foto Jadi Kartun Vector

5 Fitur Unggulan Ios 7

Cara Memakai Split Sreen Di Os Android Nougat