Memahami Ralat Kompilasi "Pengecualian Tidak Dilaporkan"
Ralat kompilasi "ralat: pengecualian tidak dilaporkan ; mesti ditangkap atau diisytiharkan to be thrown" berlaku apabila pengecualian yang diperiksa dalam kaedah atau pembina tidak ditangani dengan betul dengan.
Pengecualian Bertanda vs. Tidak Bertanda
Java membezakan antara pengecualian yang ditanda dan tidak ditanda. Pengecualian yang ditanda mesti ditangani secara eksplisit dalam kod yang dilampirkan, manakala pengecualian yang tidak ditandakan tidak. IOException ialah contoh pengecualian yang diperiksa.
Berurusan dengan Pengecualian yang Disemak
Untuk membetulkan ralat penyusunan, pengecualian yang disemak mesti ditangani sama ada oleh:
- Menangkapnya dalam percubaan ... menangkap blok dalam kaedah yang sama atau pembina.
- Mengisytiharkan bahawa kaedah lampiran atau pembina membuang pengecualian, menyerahkan tanggungjawab untuk menangkapnya kepada pemanggil.
Proses Penyelesaian
-
Fahami pengecualian: Tentukan maksudnya dan mengapa ia boleh dilempar.
-
Tentukan strategi pengendalian: Pilih antara menangkap pengecualian atau mengisytiharkannya sebagai lontaran.
-
Buat perubahan kod yang diperlukan: Laksanakan strategi yang dipilih.
Edge Kes
-
Pemula statik: Pengecualian yang diperiksa tidak boleh ditangkap dalam pemula statik. Penyelesaian adalah dengan menggunakan blok statik dan mengendalikan pengecualian di sana.
-
Blok statik: Pengecualian yang diperiksa mesti ditangkap dalam blok statik.
-
Lambdas: Lambdas tidak seharusnya membuang pengecualian yang tidak ditandai, seperti yang ditentukan oleh tandatangan antara muka fungsi. Menangkap pengecualian dalam lambda itu sendiri adalah perlu.
-
Pengecualian dengan nama yang sama: Semak nama pengecualian yang layak sepenuhnya dengan nama yang sama untuk memastikan ia bukan pengecualian yang berbeza.
Teruk Amalan
- Elakkan menangkap Exception atau Throwable sembarangan.
- Jangan isytiharkan kaedah sebagai melontar Exception, kerana ia memaksa pemanggil untuk menangani kemungkinan pengecualian yang diperiksa.
- Jangan sekali-kali skuasy pengecualian (iaitu, abaikan mereka tanpa pengendalian). Ini mengaburkan kemungkinan ralat masa jalan.
Atas ialah kandungan terperinci Bagaimanakah Saya Menyelesaikan Ralat Penyusunan 'Pengecualian Tidak Dilaporkan' di Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!