pertanyaan
Saya mengalami masalah hari ini. Dalam kode berikut, ketika pengecualian runtime dilemparkan, akankah kode selanjutnya masih dieksekusi? Apakah saya perlu menambahkan pernyataan return setelah pengecualian?
public void add (int index, e elemen) {if (size> = elements.length) {lempar runimeException baru ("Tabel pesanan penuh, tidak dapat ditambahkan"); //kembali; // Apakah perlu? } ....}
Untuk menjawab pertanyaan ini, saya menulis beberapa potong kode untuk mengujinya, dan hasilnya adalah sebagai berikut:
// kode 1Public static void test () melempar pengecualian {lempar pengecualian baru ("parameter di luar batas"); System.out.println ("Setelah pengecualian"); // Kesalahan kompilasi, "pernyataan yang tidak dapat diakses"} // kode 2try {lempar pengecualian baru ("parameter di luar batas"); } catch (Exception e) {e.printstacktrace ();} system.out.println ("Setelah pengecualian"); // dapat dieksekusi // kode 3if (true) {lempar pengecualian baru ("parameter keluar dari batas"); } System.out.println ("After Exception"); // Pengecualian dilemparkan, tidak akan dieksekusiMeringkaskan:
Jika pengecualian dilemparkan sebelum sepotong kode dan pengecualian tidak ditangkap, sepotong kode ini akan menghasilkan kesalahan waktu kompilasi "pernyataan yang tidak dapat diakses". Sebagai kode 1
Jika pengecualian dilemparkan sebelum sepotong kode, dan pengecualian ini ditangkap oleh try...catch , jika tidak ada pengecualian baru yang dilemparkan ke dalam pernyataan catch saat ini, kode tersebut dapat dieksekusi, jika tidak, sama dengan Pasal 1. Seperti kode 2
Jika pengecualian dilemparkan dalam pernyataan bersyarat, program dapat dikompilasi, tetapi pernyataan selanjutnya tidak akan dieksekusi. Sebagai kode 3
Juga merangkum perbedaan antara pengecualian runtime dan pengecualian non-runtime:
Pengecualian runtime adalah pengecualian dari kelas RuntimeException dan subclass-nya, dan merupakan pengecualian yang tidak diperiksa, seperti NullPointerException , IndexOutOfBoundsException , dll. Karena pengecualian tersebut merupakan pengecualian sistem dan tidak dapat ditangani, seperti masalah jaringan;
Entah itu adalah kesalahan logika program, seperti pengecualian pointer nol; JVM harus berhenti berlari untuk memperbaiki kesalahan ini, sehingga pengecualian runtime dapat ditangani tanpa diproses (menangkap atau muntah, tentu saja, itu juga dapat ditangani) dan JVM menanganinya sendiri. Java Runtime akan secara otomatis catch ke RuntimeException dari throw program, lalu hentikan utas dan cetak pengecualian.
Pengecualian non-runtime adalah pengecualian selain RuntimeException . Mereka semua termasuk dalam kelas Exception dan subkelasnya dalam jenis, dan diperiksa pengecualian. Pengecualian non-runtime harus diproses (menangkap atau muntah) dan jika tidak diproses, program akan memiliki kesalahan kompilasi. Secara umum, Exception yang ditulis dalam API yang throws bukanlah RuntimeException .
Pengecualian Runtime Umum:
Pengecualian non-runim umum:
Oke, di atas adalah seluruh konten artikel ini. Saya berharap konten artikel ini akan membantu untuk belajar atau bekerja semua orang. Jika Anda memiliki pertanyaan, Anda dapat meninggalkan pesan untuk berkomunikasi.