Lemparkan pengecualian
Ada tiga bentuk pengecualian melempar, satu melempar, satu lemparan, dan yang lainnya adalah lemparan otomatis pengecualian dalam sistem. Persamaan dan perbedaan di antara mereka di bawah ini.
Sistem akan secara otomatis melempar pengecualian. Ketika beberapa kesalahan logika, kesalahan politik atau jenis kesalahan konversi terjadi dalam pernyataan program, sistem akan secara otomatis melemparkan pengecualian. menyukai:
public void main (string [] args) {int a = 5, b = 0;
Sistem akan secara otomatis melempar pengecualian arithmeticException:
Pengecualian di Thread "Main" java.lang.arithmeticexception: / oleh Zeroat test.exceptionTest.main (Exceptiontest.java:62)
Menyukai
public void main (string [] args) {string s = "abc";
Sistem akan secara otomatis melempar pengecualian NumberFormateException:
Pengecualian di Thread "Main" java.lang.numberformateException: untuk string input: "ABC" di Sun.misc.floatingDecimal.readjavafortString (floatingDecimal.java: 1224) di java.lang.double.parsedouBle (doubl doubl.java:5110 test.exceptionTest.main (exceptiontest.java:62)
melemparkan
Throw adalah pernyataan yang melempar pengecualian.
Sintaks: lempar (objek pengecualian);
menyukai:
lempar e;
Secara umum digunakan ketika suatu program memiliki logika tertentu dan programmer secara aktif melempar pengecualian dari jenis tertentu. menyukai:
public void main (string [] args) {string s = "abc"; /fungsi(); }
Pengecualian akan dilemparkan:
Pengecualian di utas "utama" java.lang.numberformatexceptionat test.exceptionTest.main (exceptiontest.java:67)
melempar
Lemparan adalah deklarasi bahwa metode tersebut dapat melempar pengecualian. (Saat mendeklarasikan metode, itu berarti bahwa metode tersebut dapat melemparkan pengecualian)
Sintaks: [(pengubah)] (Jenis Nilai Pengembalian) (Nama Metode) ([Daftar Parameter]) [Throws (Kelas Pengecualian)] {......}
menyukai:
fungsi public void () melempar pengecualian {......}
Ketika suatu metode dapat melempar pengecualian, itu digunakan untuk melempar untuk menyatakan pengecualian yang dapat dilemparkan, dan kemudian menyerahkannya ke program metode yang menyebutnya. menyukai:
function statis public () melempar NumberFormateException {String S = "ABC"; Catch (NumberFormatException E) {System.err.println ("bukan tipe data tidak dapat dikonversi.");
Hasil pemrosesan adalah sebagai berikut:
Jenis non-data tidak dapat dikonversi.
Perbandingan antara lemparan dan lemparan
1. Lemparan muncul di header fungsi metode;
2. Lemparan menunjukkan kemungkinan pengecualian, dan pengecualian ini mungkin tidak selalu terjadi;
3. Keduanya adalah cara untuk menangani pengecualian secara negatif (negatif di sini tidak berarti bahwa metode ini tidak baik). dilakukan oleh fungsi.
Kebiasaan pemrograman yang baik:
1. Saat menulis program, coba {...} tangkap {...} biasanya digunakan untuk menangkap dan memprosesnya untuk bagian yang mungkin memiliki pengecualian;
2. Setelah menangkap pengecualian dengan coba {...} catch {...}, Anda harus memprosesnya di Catch {...}, bahkan jika itu adalah pernyataan output paling sederhana, atau input E pada tumpukan. );
3. Jika Anda menangkap pengecualian dalam aliran input dan output IO, Anda harus menambahkan akhirnya {...} untuk menutup aliran input dan output setelah coba {...} catch {...};
4. Jika pengecualian tertentu dilemparkan ke dalam tubuh fungsi, yang terbaik adalah menambahkan lemparan ke nama fungsi dan kemudian menyerahkannya ke fungsi atas yang menyebutnya untuk diproses.
Misalnya:
Melempar E1, E2, E3 hanya memberi tahu program bahwa metode ini dapat melemparkan pengecualian ini, dan penelepon metode mungkin harus menangani pengecualian ini, dan pengecualian ini E1, E2, E3 dapat dihasilkan oleh badan fungsi.
Throw memperjelas bahwa pengecualian ini harus dilemparkan ke tempat ini.
menyukai:
void doa (int a) melempar ioException, {coba {......} catch (Exception1 e) {throw e; a! = b) lempar pengecualian baru ("pengecualian khusus");}
Mungkin ada 3 pengecualian di blok kode, (Exception1, Exception2, Exception3).
Jika pengecualian 1 dihasilkan, itu akan ditangkap dan dilemparkan lagi, dan penelepon metode akan menanganinya.
Jika Pengecualian Exception2 dihasilkan, metode ini menangani itu sendiri (mis. System.out.println ("Kesalahan!");). Oleh karena itu, metode ini tidak akan lagi melempar pengecualian2 Pengecualian ke luar, dan Anda tidak perlu menulis Exception2 di void doa () melempar Exception1, Exception3.
Pengecualian3 adalah kesalahan dalam segmen tertentu dari metode ini.
Pernyataan lemparan digunakan dalam badan metode untuk menunjukkan bahwa pengecualian dilemparkan dan diproses oleh pernyataan dalam badan metode.
Pernyataan lemparan digunakan setelah deklarasi metode, menunjukkan bahwa pengecualian dilemparkan dan ditangani oleh penelepon metode.
Melempar terutama menyatakan bahwa metode ini akan melempar jenis pengecualian ini sehingga peneleponnya tahu untuk menangkap pengecualian ini.
Throw adalah tindakan khusus untuk melempar pengecualian ke luar, jadi itu adalah untuk melempar contoh pengecualian.
Lemparan berarti Anda memiliki kemungkinan itu, kecenderungan.
Jika Anda melempar, itu adalah, Anda telah mengubah kecenderungan itu menjadi kenyataan.
Jika ini adalah pengecualian sistem, Anda tidak dapat melakukan apa pun, dan Anda dapat memberikan pengecualian pada metode ini, karena pengecualian sistem dapat secara otomatis ditangkap oleh sistem. -Level fungsi untuk menyelesaikan masalah sebenarnya efektif itu sama. Namun, saya telah memeriksa banyak informasi.
Jika itu adalah pengecualian yang ditentukan oleh diri Anda sendiri, Anda harus menggunakan lemparan untuk melempar pengecualian yang mungkin dilemparkan dengan metode ini, jika tidak, kompilasi akan melaporkan kesalahan.