Sama ada hendak menulis blok try-catch di dalam atau di luar gelung for bergantung pada kes penggunaan dan sifat kod yang dilaksanakan di dalam gelung. Berikut ialah dua pendekatan biasa, bersama-sama sebabnya:
for (int i = 0; i < list.size(); i++) { try { // Code that might throw an exception } catch (Exception e) { // Handle the exception } }
Sebab:
Pengendalian Ralat Butiran: Jika setiap lelaran gelung berpotensi membuang pengecualian, dan anda mahu gelung meneruskan pemprosesan lelaran yang tinggal walaupun satu lelaran gagal, maka meletakkan cuba-tangkap di dalam gelung masuk akal.
Pemulihan Ralat Khusus: Ia membolehkan anda mengendalikan pengecualian berdasarkan setiap lelaran. Contohnya, mengelog ralat dan meneruskan, atau menggunakan nilai lalai untuk lelaran yang gagal.
Langkau Lelaran Gagal: Ia berguna apabila sesetengah data buruk atau rosak, tetapi anda mahu terus memproses data lain tanpa menghentikan gelung.
Bila hendak digunakan:
Memproses koleksi yang mana sesetengah entri mungkin bermasalah, tetapi anda mahu memproses seberapa banyak entri yang mungkin.
Melaksanakan operasi bebas pada setiap lelaran (seperti memproses rekod, membuat panggilan API, dll.).
try { for (int i = 0; i < list.size(); i++) { // Code that might throw an exception } } catch (Exception e) { // Handle the exception }
Sebab:
Gagal Cepat: Jika anda mahu gelung dihentikan sebaik sahaja pengecualian berlaku dan menghalang pemprosesan selanjutnya, tangkapan cuba harus berada di luar gelung. Ini bermakna sebaik sahaja pengecualian dilemparkan, gelung akan ditamatkan dan anda boleh menangani ralat secara global.
Prestasi: Jika kod di dalam gelung dijangka tidak kerap membuang pengecualian, meletakkan cubaan tangkap di luar gelung berpotensi menjadi lebih cekap sedikit. Ini kerana mencipta blok cuba-tangkap berulang kali di dalam gelung boleh mempunyai prestasi kecil di atas kepala.
Pengendalian Ralat Global:
Ia berguna apabila pengecualian digunakan pada keseluruhan pelaksanaan gelung dan anda mahu mengendalikan ralat pada tahap yang lebih tinggi.
Bila hendak digunakan:
Apabila semua lelaran berkait rapat, dan ralat dalam satu lelaran bermakna anda tidak boleh meneruskan yang lain.
Apabila pengecualian menjejaskan logik keseluruhan dan harus menghentikan pelaksanaan selanjutnya dengan serta-merta.
Ringkasan Perkara Utama:
Cuba tangkap dalam gelung: Gunakan ini apabila anda mahu mengendalikan ralat individu untuk setiap lelaran secara berasingan dan pastikan gelung berjalan untuk lelaran yang tinggal.
Cuba tangkap di luar gelung: Gunakan ini apabila keseluruhan gelung bergantung pada kejayaan pelaksanaan setiap lelaran dan harus berhenti sebaik sahaja ralat berlaku.
Kedua-dua pendekatan adalah sah dan keputusan bergantung pada sama ada anda mahu gelung meneruskan pemprosesan elemen lain selepas pengecualian ditangkap atau berhenti sepenuhnya.
Atas ialah kandungan terperinci Patutkah try-catch ditulis di dalam atau di luar gelung for? Dan nyatakan alasan anda.. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!