Boleh Lempar boleh dibahagikan kepada dua jenis:
Ralat
Pengecualian :
Pengecualian masa jalan (pengecualian tidak bertanda)
Pengecualian bukan masa jalan (pengecualian yang ditanda)
Ralat: Ralat ialah ralat yang tidak dapat dikendalikan oleh program ini, seperti OutOfMemoryError, ThreadDeath, dll. Apabila pengecualian ini berlaku, jvm akan memilih untuk menamatkan pelaksanaan program
Pengecualian: ialah program Pengecualian yang boleh dikendalikan dengan sendirinya
Pengecualian Runtime: Kesemuanya ialah kelas dan subkelas RuntimeException, seperti NullPointerException (penunjuk nol), IndexOutOfBoundException (susun di luar sempadan), dsb. . Pengecualian ini boleh ditangkap dan diproses Atau anda tidak boleh mengendalikan
Pengecualian bukan masa jalan: (pengecualian yang ditandakan) Kecuali untuk RuntimeException, jenis tersebut tergolong dalam kelas Exception daripada sintaks program, pengecualian ini mesti diproses Jika tidak dikendalikan, program tidak akan dapat lulus kompilasi, seperti IOException, SQIException
Cuba, tangkap, dan akhirnya tidak boleh digunakan secara bersendirian. Kaedah gabungan ialah: cuba…tangkap, cuba…tangkap&hellip ;akhirnya, cuba…akhirnya boleh ada satu atau lebih tangkapan, dan paling banyak hanya satu pernyataan akhirnya
Skop pembolehubah dalam tiga blok pernyataan ialah. blok kod. Mereka tidak boleh mengakses satu sama lain secara berasingan Jika anda ingin boleh diakses dalam ketiga-tiga blok, tentukan pembolehubah di luar blok ini
Jika terdapat berbilang blok tangkapan, paling banyak satu. kelas pengecualian akan dipadankan dan kod blok tangkapan akan dilaksanakan, dan blok tangkapan lain tidak akan dilaksanakan, dan susunan padanan adalah dari atas ke bawah , hanya satu kelas pengecualian akan dipadankan paling banyak, yang bermaksud tiada satu pun daripadanya kelas pengecualian boleh dilaksanakan
tangkap Kelas pengecualian yang ditangkap tidak boleh diulang, dan pengecualian subkelas mesti ditangkap dahulu dan kemudian kelas induk
Tidak kira sama ada terdapat masalah dengan penyataan dalam percubaan, penyataan dalam akhirnya mesti dilaksanakan untuk keluar bersatu untuk program untuk memastikan pengurusan bersatu status program Dalam keadaan biasa, sumber diproses akhirnya Kerja penutupan dan pembersihan
package com.exception; public class Test { public static void main(String[] args) { int[] a=new int[5]; try { for (int i = 0; i <10 ; i++) { a[i]=i; } //空指针 }catch (ArrayIndexOutOfBoundsException e){ //弹出出错的地方 System.out.println("1"); e.printStackTrace(); //访问异常,数组越界 }catch (NullPointerException e){ System.out.println("2"); e.printStackTrace(); //无论有错与否,finally最终执行 } finally { System.out.println("都能执行"); } System.out.println("---------------"); } }
akhir: kata kunci yang digunakan untuk mentakrifkan pemalar
akhirnya: blok kod yang sentiasa boleh dilaksanakan dalam pengecualian
finalize(): kutipan sampah, kaedah ini ialah panggilan sistem dan tidak tidak memerlukan pengaturcara Panggil secara manual
Apabila mentakrifkan kaedah, anda boleh menggunakan pernyataan kata kunci throws untuk menunjukkan bahawa kaedah tidak akan memproses pengecualian, tetapi menyerahkannya kepada pemanggil kaedah untuk mengendalikan pengecualian
Apabila mentakrifkan kaedah, kata kunci lontaran boleh digunakan oleh pengaturcara mengikut pilihannya sendiri . Jika digunakan, ia tidak akan diproses apabila menerangkan kaedah
pengecualian Jika kaedah utama juga menggunakan kata kunci lontaran, ia bermakna kaedah utama tidak mengendalikan pengecualian, dan akhirnya menyerahkannya kepada jvm. Jvm mengendalikan pengecualian dengan menamatkan program
melemparkan pengecualian subkelas, pemanggil kaedah tidak perlu mengendalikan pengecualian.
Nota:
kata kunci baling: Anda boleh menyesuaikan pengecualian, iaitu, melontar pengecualian Apabila dilempar, ia adalah objek kelas pengecualian
balingan:
digunakan selepas pengisytiharan kaedah, diikuti dengan nama kelas pengecualian
boleh diikuti oleh berbilang kelas pengecualian, dipisahkan dengan koma
menunjukkan bahawa pengecualian dilemparkan, dan pemanggil kaedah mengendalikannya
lontaran menunjukkan kemungkinan pengecualian, tetapi tidak semestinya berlaku
lontaran:
digunakan dalam badan kaedah, diikuti dengan objek pengecualian
hanya boleh membuang satu Objek pengecualian
bermaksud melontar pengecualian, dan terdapat kaedah pemprosesan pernyataan badan
melemparkan pengecualian pasti akan berlaku, ia bukan satu kemungkinan
perwakilan kod:
package com.test; public class Throw { //throws Exception 代表该方法出现异常时不做处理 public void deposit(int num1,int num2) throws Exception { // RuntimeException()是运行时异常最大的父类 int sum; if(num2==0){ throw new RuntimeException("可以自定义一个异常抛出:除数不能为0"); }else{ sum=num1/num2; } } }
Atas ialah kandungan terperinci Kaedah dan langkah untuk menganalisis kejadian Java exception Exception. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!