Rumah >pembangunan bahagian belakang >C++ >`throw` vs. `throw new Exception()`: Bilakah Anda Perlu Melemparkan Semula Pengecualian dalam C#?
Pengendalian pengecualian C#: Perbezaan antara throw
dan throw new Exception()
Apabila mengendalikan pengecualian C#, pengaturcara mungkin menghadapi dua struktur yang kelihatan serupa:
<code class="language-csharp">try { ... } catch { throw }</code>
dan
<code class="language-csharp">try { ... } catch (Exception e) { throw new Exception(e.Message); }</code>
Walaupun kedua-duanya membuang pengecualian, terdapat perbezaan utama dalam tingkah laku mereka.
throw
Pernyataan throw
tanpa parameter melemparkan semula pengecualian asal yang menyebabkan blok try
gagal. Ini bermakna surih tindanan pengecualian asal dikekalkan, menjadikannya lebih mudah untuk nyahpepijat dan mengesan punca ralat.
throw new Exception()
Sebaliknya, throw new Exception(e.Message)
mencipta contoh pengecualian baharu dengan atribut Message
nya ditetapkan kepada mesej pengecualian asal. Walau bagaimanapun, ini mempunyai beberapa kelemahan:
ArgumentException
, mengandungi maklumat tambahan (seperti ParamName
) yang hilang apabila mencipta pengecualian baharu daripada jenis yang berbeza. Amalan Terbaik:
Dalam kebanyakan kes, sangat disyorkan untuk mengelak daripada menggunakan throw e
atau throw new Exception(e.Message)
untuk membuang semula pengecualian. Pertimbangkan perkara berikut:
throw;
. InnerException
. Atas ialah kandungan terperinci `throw` vs. `throw new Exception()`: Bilakah Anda Perlu Melemparkan Semula Pengecualian dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!