Java ialah bahasa pengaturcaraan yang cantik dan mudah dibaca, tetapi ralat pasti akan berlaku semasa proses pembangunan. Untuk menyelesaikan ralat ini, Java memperkenalkan mekanisme pengendalian pengecualian. Mekanisme ini membolehkan pengaturcara mengesan masalah dan mengambil tindakan yang sewajarnya semasa program sedang berjalan. Artikel ini akan membincangkan mekanisme pengendalian pengecualian dalam Java, termasuk cara membaling, menangkap dan mengendalikan pengecualian.
Apakah pengecualiannya?
Pengecualian ialah peristiwa yang menunjukkan ralat berlaku semasa pelaksanaan program. Contohnya, pembahagian dengan sifar, rujukan penuding nol atau input tidak sah mungkin berlaku. Di Java, pengecualian merujuk kepada masalah yang dihadapi oleh atur cara semasa pelaksanaan, yang menjejaskan pelaksanaan biasa atur cara dan menyebabkan atur cara ditamatkan secara tidak normal.
Klasifikasi pengecualian dalam Java
Pengecualian dalam Java boleh diklasifikasikan kepada dua jenis: pengecualian yang ditanda dan pengecualian yang tidak ditanda.
Bagaimana untuk membuang pengecualian?
Apabila masalah ditemui dalam program, anda boleh menggunakan pernyataan lontaran untuk membuang pengecualian.
throw new Exception("发生异常了");
Dalam contoh ini, objek Pengecualian baharu dilemparkan. Jika pernyataan lontaran diikuti oleh objek kelas pengecualian tersuai, pengecualian yang ditentukan akan dilemparkan. Contoh berikut menunjukkan cara untuk menyesuaikan pengecualian dan menggunakannya dalam atur cara:
public class CustomException extends Exception { public CustomException(String message) { super(message); } }
Gunakan pengecualian tersuai dalam atur cara:
public void checkAge(int age) throws CustomException { if (age < 0 || age > 100) { throw new CustomException("年龄不在合法范围内"); } //继续执行其他代码 }
Dalam contoh di atas, jika umur kurang daripada 0 atau lebih daripada 100, CustomException dilemparkan.
Bagaimana untuk menangkap pengecualian?
Salah satu cara untuk mengendalikan pengecualian adalah dengan "menangkap"nya. Blok cuba-tangkap dalam Java digunakan untuk menangkap pengecualian.
try { //需要尝试执行的代码 } catch (Exception e) { //处理异常的代码 }
Dalam contoh ini, sebarang kod yang mungkin membuang pengecualian boleh diletakkan dalam blok percubaan. Apabila melaksanakan kod dalam blok cuba, jika pengecualian berlaku, program melompat ke blok tangkapan. Dalam blok tangkapan, pengaturcara boleh mengambil langkah yang diperlukan untuk mengendalikan pengecualian. Berikut ialah program Java ringkas yang menunjukkan pemprosesan blok cuba-tangkap.
public static void main(String[] args) { try { int i = 1/0; } catch (Exception e) { System.out.println("发生异常了:" + e); } }
Dalam contoh di atas, atur cara akan cuba membahagikan 1 dengan 0. Oleh kerana ini tidak dibenarkan, ArithmeticException dilemparkan. Blok tangkapan akan menangkap pengecualian ini dan mengeluarkan "Pengecualian berlaku: java.lang.ArithmeticException: / by zero" pada konsol.
Bagaimana untuk mengendalikan pengecualian?
Satu cara untuk mengendalikan pengecualian adalah dengan membuangnya terus daripada kaedah. Ini biasanya akan ditangkap dan dikendalikan oleh pemanggil. Satu lagi cara untuk mengendalikan pengecualian ialah menggunakan kaedah dengan klausa lontaran untuk menentukan pengecualian yang perlu dikendalikan. Berikut ialah contoh:
public void checkAge(int age) throws CustomException { if (age < 0 || age > 100) { throw new CustomException("年龄不在合法范围内"); } //继续执行其他代码 }
Klausa lontaran yang dinyatakan selepas tandatangan kaedah memberitahu pemanggil bahawa pengecualian yang ditanda mesti ditangkap atau dibuang. Jika pemanggil tidak mengendalikan pengecualian ini, program akan menamatkan dan mengeluarkan mesej pengecualian.
Cara lain untuk mengendalikan pengecualian ialah menggunakan blok akhirnya. Kod dalam blok akhirnya dilaksanakan selepas blok cuba dan tangkap dan akan dilaksanakan tanpa mengira sama ada pengecualian berlaku.
try { //需要尝试执行的代码 } catch (Exception e) { //处理异常的代码 } finally { //无论是否发生异常都会执行的代码 }
Contoh penggunaan blok akhirnya adalah untuk menutup fail atau sumber rangkaian yang terbuka. Memandangkan sumber ini terhad di Jawa, anda perlu ingat untuk menutupnya untuk melepaskannya.
BufferedReader reader = null; try { reader = new BufferedReader(new FileReader("文件名")); //对文件执行一些操作 } catch (Exception e) { //处理异常的代码 } finally { try { if (reader != null) { reader.close(); reader = null; } } catch (IOException e) { e.printStackTrace(); } }
Dalam contoh ini, kod dalam blok cubaan membuka fail dan menjalankan beberapa operasi. Jika ralat berlaku dalam blok cuba, program melompat ke blok tangkapan dan mengendalikan pengecualian. Tidak kira sama ada pengecualian berlaku dalam blok cuba, kod dalam blok akhirnya menutup fail yang terbuka.
Kesimpulan
Mekanisme pengendalian pengecualian Java membolehkan pengaturcara mengesan ralat dan mengambil langkah yang sesuai semasa program sedang berjalan. Artikel ini membincangkan klasifikasi pengecualian Java, kaedah melontar pengecualian, menangkap pengecualian, dan mengendalikan pengecualian secara mendalam, dan menyediakan beberapa contoh khusus. Apabila menulis kod Java, pengaturcara harus mengikut amalan terbaik untuk memastikan kestabilan dan kebolehpercayaan kod.
Atas ialah kandungan terperinci Mekanisme pengendalian pengecualian di Jawa. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!