Panduan Amalan Terbaik Pelontaran Semula Pengecualian C#
Apabila mengendalikan pengecualian dalam C#, adalah penting untuk memilih kaedah balingan semula yang sesuai untuk mengekalkan surih tindanan yang jelas.
Kaedah 1: throw;
Sintaks ini melemparkan semula pengecualian semasa sambil mengekalkan surih tindanannya.
Kaedah 2: throw ex;
Kaedah ini melemparkan semula objek Pengecualian yang ditentukan. Walau bagaimanapun, ia menimpa surih tindanan asal dengan kedudukan semasa pernyataan lontaran, menjadikannya sukar untuk menentukan sumber pengecualian.
Kaedah yang manakah lebih baik?
Apabila melontar semula pengecualian, sentiasa gunakan throw;
. throw ex;
harus dianggap sebagai ralat pengekodan kerana ia mengaburkan maklumat penting tentang sumber pengecualian.
Mengendalikan pengecualian daripada sumber lain
Jika anda perlu membuang semula pengecualian yang berasal dari tempat lain (contohnya, dalam AggregateException atau TargetInvocationException), jangan buang semula secara langsung. Sebaliknya, gunakan ExceptionDispatchInfo untuk mengekalkan maklumat yang diperlukan.
Contohnya:
<code class="language-csharp">try { methodInfo.Invoke(...); } catch (System.Reflection.TargetInvocationException e) { System.Runtime.ExceptionServices.ExceptionDispatchInfo.Capture(e.InnerException).Throw(); throw; // 确保编译器理解该代码块不会退出 }</code>
Atas ialah kandungan terperinci Bagaimanakah Pengecualian Perlu Dilemparkan Semula dalam C# untuk Mengekalkan Jejak Tindanan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!