CodeGym /Blog Jawa /Acak /Jawa Coba - Nyekel
John Squirrels
tingkat
San Francisco

Jawa Coba - Nyekel

Diterbitake ing grup
Kesalahan bisa kedadeyan sajrone ngeksekusi program. Iku masalah umum kanggo saben programmer, saka pamula kanggo profesional nyata. Ora kabeh kesalahan muncul amarga kesalahane pangembang. Sawetara iku angel kanggo prédhiksi, lan kadhangkala ora bisa. Contone, nalika ngundhuh program, sambungan jaringan bisa tiba-tiba mudhun utawa daya bisa mati. Kahanan kaya mengkono diarani pengecualian. Coba lan tangkep yaiku bagean konstruksi sing digunakake kanggo nangani pengecualian.

Jawa nyoba lan nyekel blok

Nalika ana kesalahan, Jawa biasane mandheg lan ngasilake pesen kesalahan. Proses iki diarani "Jawa mbuwang pengecualian". Jawa menehi fasilitas khusus kanggo nangani pengecualian. Salah sijine yaiku nyoba ... nyekel ... pungkasane konstruksi. Iki minangka sintaks saka try block, catch block lan pungkasane blok.
//try block
try {
  // Block of code to try
}
//try catch
catch(Exception e) {
  // Block of code to handle errors
}
finally {
 // Optional block of code
          }
Nalika ana pangecualian ing pemblokiran nyoba, kontrol liwat kanggo pemblokiran nyekel, kang bisa nangani istiméwa. Yen blok kasebut ora ditemokake, pesen pangecualian sing ora ditangani bakal ditampilake kanggo pangguna lan eksekusi program kasebut mandheg. Iku kanggo nyegah mandeg darurat kuwi sampeyan kudu nggunakake try..catch block. Java Try - Catch - 1

Sedhela babagan nyoba, nyekel, pungkasane, mbuwang tembung kunci

Penanganan pangecualian ing Jawa adhedhasar panggunaan tembung kunci ing ngisor iki ing sawijining program:
  • nyoba - nemtokake blok kode ing ngendi pangecualian bisa kedadeyan;
  • nyekel - nemtokake blok kode ing ngendi pangecualian ditangani;
  • pungkasanipun - nemtokake pemblokiran kode sing opsional, nanging yen ana, wis kaleksanan tho, preduli saka asil pemblokiran nyoba.
Tembung kunci iki digunakake kanggo nggawe konstruksi pangolahan khusus ing kode program: nyoba nyekel, lan nyoba nyekel pungkasane}.
  • uncalan - digunakake kanggo mundhakaken pangecualian;
  • uncalan - digunakake ing cara teken kanggo ngelingake yen cara bisa mbuwang pangecualian.

Conto gampang konstruksi nyoba-nyekel

Ayo kita duwe program karo sawetara array.
public class TryTest {
   public static void main(String[] args) {
       int[] myArray = new int[5];
       myArray[7] = 8;
       System.out.println(myArray[7]);
   }
}
Amarga kita nyoba ngakses unsur array kanthi indeks sing ora ana, program kasebut bakal metu kanthi kesalahan:
Pengecualian ing thread "utama" java.lang.ArrayIndexOutOfBoundsException: Indeks 7 metu saka wates kanggo dawane 5 dina.TryTest.main(TryTest.java:6) Proses rampung nganggo kode metu 1
Ayo ngowahi program iki lan nangani pengecualian iki kanthi nyoba-nyekel. Pisanan teka nyoba blok, mengko - nyekel blok.
//try catch example
public class TryTest {
   public static void main(String[] args) {
       try {
           int[] myArray = new int[5];
           myArray[7] = 8;
           System.out.println(myArray[7]);
       } catch (Exception myEx) {
           System.out.println("The exception was handled...");
       }

       System.out.println("This is the end of the program...");
   }
}
Saiki output wis diganti:
Pengecualian ditangani... Iki pungkasane program... Proses rampung nganggo kode metu 0 Proses rampung nganggo kode metu 0
Ing kasus iki, program rampung kanthi bener, pesen kita ditampilake ing layar. Mandap bener saka program wis signaled dening kode 0 ing mburi proses, nalika salah — 1. Nalika nggunakake try...catch block, kabeh statements antarane nyoba lan nyekel statements kaleksanan pisanan. Yen ana pangecualian ing blok nyoba, banjur urutan eksekusi normal mandheg lan nerusake menyang statement catch. Mulane, nalika eksekusi program tekan angka [7] = 8; baris, program bakal mandheg lan pindhah menyang pemblokiran nyekel Ing kasus kita, kita wis ngumumaké variabel myEx karo jinis Exception. Iki minangka kelas dhasar kanggo kabeh pangecualian, lan supaya bisa beda. Contone, ana pangecualian sing tanggung jawab kanggo tumpukan overflows, ngluwihi indeksasi array, kaya ing kasus kita, nuding Null, lan liya-liyane. Yen kita ora ngira karo jinis pangecualian, mula program kasebut uga bakal salah. Nanging, kita milih jinis Pangecualian kanggo gamblang saka conto, lan iku kelas dhasar kanggo kabeh istiméwa. Dadi statement nyekel (Exception myEx) bakal nangani meh kabeh pengecualian. Nangani pangecualian ing kasus iki Sawise pemblokiran nyekel rampung, program terus sawijining karya, nglakokaké kabeh instruksi liyane sawise pemblokiran nyekel. Yen sampeyan pengin ndeleng kedaden pangecualian, sampeyan bisa duwe program print tilak tumpukan saka telpon cara. Iki sing ditindakake JVM nalika ana pangecualian sing ora kejiret: mungkasi eksekusi program, lan nyithak tilak tumpukan sawise nglakokake kode blok pungkasan, yen ana.
public class TryTest {
   public static void main(String[] args) {
       try {
           int[] myArray = new int[5];
           myArray[7] = 8;
           System.out.println(myArray[7]);
       } catch (Exception myEx) {

         myEx.printStackTrace();
       }

       System.out.println("This is the end of the program...");
   }
}
Nangani istiméwa ing kasus iki teka mudhun kanggo print tumpukan tilak kesalahan kanggo console nggunakake printStackTrace () cara ditetepake ing kelas Exception .
java.lang.ArrayIndexOutOfBoundsException: Indeks 7 metu saka wates kanggo dawane 5 dina.TryTest.main(TryTest.java:7) Iki pungkasane program... Proses rampung nganggo kode metu 0
Nanging, program kasebut metu kanthi bener.

Akhire! Sawise nyekel

Ing conto lan ing definisi tembung kunci kanggo pangecualian penanganan, kita sebutno blok pungkasan. Iku opsional, nanging yen ana, bakal dileksanakake preduli saka asil saka pamblokiran nyoba. Ayo ngganti jinis pangecualian menyang NullPointerException.
public class TryTest {
   public static void main(String[] args) {
       try {
           int[] myArray = new int[5];
           myArray[7] = 8;
           System.out.println(myArray[7]);
       } catch (NullPointerException myEx) {
           System.out.println("The exception was handled...");

       }

       finally{
           System.out.println(" finally");
       }

       System.out.println("This is the end of the program...");
   }
}
Punika output:
Pangecualian ing thread "utama" java.lang.ArrayIndexOutOfBoundsException: Indeks 7 metu saka wates kanggo dawane 5 dina.TryTest.main(TryTest.java:7) pungkasane Proses rampung nganggo kode metu 1
Miturut cara, kita bisa nemtokake jinis pengecualian sing bener. Punika IndexOutOfBoundsException.
public class TryTest {
   public static void main(String[] args) {
       try {
           int[] myArray = new int[5];
           myArray[7] = 8;
           System.out.println(myArray[7]);
       } catch (IndexOutOfBoundsException myEx) {
           System.out.println("The exception was handled...");

       }

       finally{
           System.out.println(" finally");
       }

       System.out.println("This is the end of the program...");
   }
}
Ing kasus iki, output bakal kaya ing ngisor iki:
Pengecualian ditangani ... pungkasane Iki pungkasan program ... Proses rampung kanthi kode metu 0

Kepiye cara pangecualian?

Intine kabeh tembung iki —cekel, uncalan, uncalan mung bisa digunakake karo java.lang.Throwable utawa turunane. Contone, sampeyan bisa nindakake iki:
public class MyClass {
    public static void main(String[] args) {
        try {
        } catch (Throwable thr) {
}
    }
}
Nanging, sampeyan ora bisa nindakake kaya iki:
public class MyClass {
public static void main(String[] args) {
        try {
        } catch (String thr) {
}
    }
}
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION