Pengendalian Pengecualian: Mengekalkan Jejak Tindanan Asal Semasa Melempar Semula
Melempar semula pengecualian ialah amalan biasa dalam pengendalian pengecualian, selalunya diperlukan apabila menangani abstraksi peringkat lebih tinggi. Untuk memastikan konteks pengecualian asal, termasuk surih tindanan dan InnerException, kekal utuh, teknik khusus adalah penting.
Perbandingan Contoh Kod
Mari kita periksa dua coretan kod:
<code class="language-csharp">try { // Some code that might throw an exception } catch (Exception ex) { throw ex; // This approach is problematic }</code>
dan:
<code class="language-csharp">try { // Some code that might throw an exception } catch { throw; // This is the preferred method }</code>
Kepentingan throw;
Kunci untuk mengekalkan surih tindanan yang lengkap terletak pada penggunaan throw;
. Dalam catch
blok, throw;
melontar semula pengecualian yang ditangkap sekarang tanpa mengubah surih tindanannya. Ini mengekalkan timbunan panggilan asal, menjadikan penyahpepijatan lebih mudah.
Menganalisis Perbezaan
Blok kod kedua, menggunakan blok catch
generik, adalah kurang tepat kerana ia menangkap sebarang jenis pengecualian. Walau bagaimanapun, ia masih membuang semula pengecualian dengan betul menggunakan throw;
, sekali gus mengekalkan surih tindanan asal. Kedua-dua kaedah, apabila menggunakan throw;
, mencapai hasil yang sama dari segi pemeliharaan surih tindanan.
Amalan Terbaik untuk Balingan Semula Pengecualian
Sentiasa gunakan throw;
di dalam blok catch
anda untuk mengekalkan integriti surih tindanan pengecualian asal. Elakkan throw ex;
kerana ia mencipta surih tindanan baharu, mengaburkan sumber asal ralat. Mengikuti amalan terbaik ini menghasilkan pengendalian pengecualian yang lebih mantap, bermaklumat dan mudah dinyahpepijat.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengekalkan Jejak Tindanan Pengecualian Apabila Melempar Semula Pengecualian?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!