Rumah >Java >javaTutorial >Cara menggunakan pengecualian dan penegasan Java
Pengecualian Java
Di Java, objek pengecualian sentiasa merupakan contoh subkelas Boleh Lempar.
Sistem kelas Ralat menerangkan ralat dalaman dan situasi keletihan sumber dalam sistem pengendalian Java.
Ralat yang disebabkan oleh pengaturcaraan akan membawa kepada RuntimeException. Pengecualian yang disebabkan oleh sebab ralat lain - contohnya, ralat dalam atur cara yang pernah berjalan dengan betul disebabkan ralat I/O tidak akan menyebabkan pengecualian RuntimeException.
Pengecualian yang diperoleh daripada RuntimeException termasuk masalah berikut: 1> Penukaran jenis salah 2> Akses keluar sempadan tatasusunan 3> Mencuba untuk mengakses penuding nol
Pengecualian yang tidak diperolehi daripada RuntimeException termasuk:
1> cuba membaca data dari hujung fail
2> cuba membuka URL yang salah; 🎜 >
3> Cuba menggunakan rentetan untuk membina objek Kelas apabila kelas yang sepadan dengan rentetan tidak wujud Prinsip pengendalian RuntimeException ialah: jika RuntimeException berlaku, ia mestilah milik anda; Ralat; Pelayar yang berbeza boleh mengendalikan jenis URL yang berbeza, jadi sama ada format URL tidak betul bergantung pada persekitaran tertentu, bukan hanya kod program Spesifikasi Bahasa Java menyenaraikan mana-mana Subkelas Ralat dan subkelas RuntimeException dipanggil pengecualian tidak bertanda, manakala pengecualian lain dipanggil pengecualian bertanda Pengecualian hanya akan dilemparkan dalam 4 situasi berikut:1>Panggil kaedah yang melemparkan "; pengecualian yang ditanda", seperti kaedah readLine kelas BufferReader; 2>Ralat berlaku semasa menjalankan program dan " Pengecualian yang disemak"; 3> Ralat program, contohnya, a[-1]=0 akan membuang "pengecualian yang tidak ditanda" seperti indeks tatasusunan di luar sempadan (ArrayIndex--OutOfBoundsException); perpustakaan; Tidak perlu mengisytiharkan ralat dalaman dalam Java. Kaedah mesti mengisytiharkan semua "pengecualian yang disemak" yang mungkin dilemparkannya. Jika anda mengatasi kaedah daripada kelas induk dalam subkelas anda sendiri. Apa yang memerlukan perhatian khusus ialah jika kaedah kelas induk tidak membuang apa-apa "pengecualian yang diperiksa" sama sekali, subkelas hanya boleh melakukan perkara yang sama; Dalam Java, kaedah tanpa penunjuk lontaran tidak boleh membuang sebarang pengecualian Java telah diperiksa; Untuk blok kod cuba/tangkap, jika mana-mana kod dalam kaedah melemparkan pengecualian dan jenisnya tidak dinyatakan dalam tangkapan, kaedah akan keluar serta-merta;
Anda harus menangkap dan mengendalikan pengecualian yang anda tahu cara mengendalikan (menggunakan tangkapan), dan lulus pengecualian yang anda tidak tahu cara mengendalikannya (menggunakan lontaran); ditangkap atau tidak Pengecualian, kod dalam klausa akhirnya akan dilaksanakan
Walaupun pengaturcara Java mesti menetapkan kod secara manual dalam klausa akhirnya untuk mengitar semula sumber, disebabkan mekanisme "pengumpulan sampah" terbina dalam Java, hanya terdapat sejumlah kecil sumber Hanya kitar semula manual diperlukan
kaedah actionPerformed tidak boleh membuang sebarang pengecualian yang diperiksa
Beberapa petua untuk menggunakan mekanisme pengecualian Java:
1 >Kawalan pengecualian tidak boleh menggantikan Ujian mudah, berbanding dengan melaksanakan ujian mudah, masa yang diperlukan untuk menangkap pengecualian adalah lebih lama daripada yang pertama, jadi pengecualian hanya boleh digunakan dalam keadaan tidak normal
2> Jangan terlalu memperhalusi pengecualian ;
3〉Jangan sekat pengecualian: Anda boleh menggunakan format berikut: cuba { //code} catch (Exception e) { //kosong}
4〉Jangan malu untuk meluluskan pengecualian: untuk pengecualian tertentu (seperti memanggil pembina FileInputStream atau kaedah readLine), adalah lebih baik untuk lulus daripada menangkapnya. Adalah lebih sesuai untuk mempunyai kaedah peringkat tinggi memberitahu pengguna tentang ralat atau membatalkan pelaksanaan arahan yang tidak berjaya.
penegasan JavaSecara lalai, penegasan Java dimatikan. Ia boleh dibuka dengan -ea dan ditutup dengan -da. Pilihan -ea:...akan menghidupkan fungsi penegasan semua kelas dalam pakej lalai Menghidupkan atau mematikan penegasan ialah fungsi pemuat kelas" tidak mempunyai kesan. Untuk kelas sistem ini, gunakan pilihan -enablesystemassertions/-esa untuk menghidupkan fungsi penegasan
Petua penggunaan penegasan Java: 1> >
2> Pemeriksaan penegasan hanya digunakan semasa pembangunan dan ujian program Oleh itu, penegasan tidak boleh digunakan sebagai isyarat untuk memberitahu bahagian lain program bahawa ralat boleh pulih telah berlaku, atau penegasan harus digunakan; sebagai cara pemberitahuan. Penegasan Java hanya boleh digunakan untuk mencari ralat dalaman dalam program semasa fasa ujian; program tersebut.Berikut ialah bahagian daripada think in java
Garis Panduan PelanggaranGunakan pelanggaran untuk melakukan perkara berikut: ( 1) Selesaikan masalah dan panggil semula kaedah yang menyebabkan pelanggaran. (2) Tenangkan keadaan dan teruskan tanpa mencuba kaedah itu lagi.(3) Kira beberapa hasil lain daripada hasil yang anda mahukan kaedah tersebut.
(4) Selesaikan masalah sebanyak mungkin dalam persekitaran semasa, dan buang semula pelanggaran yang sama ke dalam persekitaran yang lebih maju.(5) Selesaikan masalah sebanyak mungkin dalam persekitaran semasa, dan buang semula pelanggaran yang berbeza ke dalam persekitaran yang lebih maju.
(6) Hentikan pelaksanaan program.
(7) Permudahkan pengekodan. Jika skim pelanggaran membuat perkara lebih rumit, ia akan menjadi sangat menjengkelkan, dan lebih baik tidak menggunakannya.
(8) Jadikan perpustakaan dan program anda sendiri lebih selamat. Ini ialah "pelaburan jangka pendek" (untuk penyahpepijatan yang lebih mudah) dan "pelaburan jangka panjang" (untuk meningkatkan keteguhan aplikasi)
Atas ialah kandungan terperinci Cara menggunakan pengecualian dan penegasan Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!