Amalan Terbaik: C# Exception Rethrowing
Apabila mengendalikan pengecualian, mengekalkan maklumat InnerException
dan surih tindanan adalah penting untuk penyahpepijatan. Artikel ini meneroka amalan terbaik untuk menangkap dan melontar semula pengecualian untuk mengekalkan maklumat kritikal ini.
Perbandingan blok kod pengendalian pengecualian
Pertimbangkan blok kod berikut:
<code class="language-csharp">try { //某些代码 } catch (Exception ex) { throw ex; }</code>
<code class="language-csharp">try { //某些代码 } catch { throw; }</code>
Perbezaan utama antara dua blok kod ini ialah cara mereka mengekalkan butiran pengecualian. Dengan menggunakan throw;
, blok kod kedua secara berkesan melemparkan semula pengecualian semasa tanpa mengubah surih tindanan atau InnerException
. Kaedah ini memastikan bahawa konteks pengecualian asal dikekalkan.
Sebaliknya, blok kod pertama secara eksplisit melemparkan semula pengecualian yang ditangkap ex
. Walau bagaimanapun, operasi ini menimpa surih tindanan semasa dengan surih tindanan baharu, bermula pada titik di mana ex
dibaling semula. Oleh itu, InnerException
dan sebarang maklumat surih tindanan selepas pengecualian awal akan hilang.
Nota lain
Anda juga disyorkan untuk menghantar pengecualian asal sebagai parameter kepada pengecualian yang dilemparkan semula, membenarkan kod hiliran mengakses butiran yang dipelihara. Ini boleh dicapai dengan sintaks berikut:
<code class="language-csharp">throw new Exception("自定义异常", ex);</code>
Ringkasnya, menggunakan throw;
apabila melontar semula pengecualian mengekalkan butiran pengecualian asal, termasuk InnerException
dan surih tindanan. Amalan ini penting untuk penyahpepijatan dan analisis ralat yang berkesan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengekalkan Butiran Pengecualian Apabila Melemparkan Semula Pengecualian dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!