Dalam rawatan yang tidak normal, mematuhi amalan terbaik adalah penting untuk memastikan penjejakan dan pemulihan ralat yang betul. Salah satu aspek yang perlu dipertimbangkan ialah pengesanan inCException dan stack yang mengekalkan kelainan asal apabila mengulangi keabnormalan yang tidak normal.
Pertimbangkan dua blok kod berikut:
<code class="language-csharp">try { //某些代码 } catch (Exception ex) { throw ex; // 这种方式会保留原始异常信息,但会丢失调用堆栈信息的一部分 }</code>
<code class="language-csharp">try { //某些代码 } catch (Exception ex) { throw; // 这种方式会保留完整的调用堆栈信息 }</code>
Untuk mengekalkan penjejakan timbunan, disyorkan untuk menggunakan "lemparan;" yang tidak menentukan keabnormalan. Ini membolehkan penjejakan timbunan yang tidak normal asal kepada pemanggil.
atau, anda boleh menggunakan format berikut untuk menghidupkan semula kelainan dan penjejakan timbunan asalnya:
sila ingat bahawa ia adalah tabiat yang baik untuk lulus keabnormalan asal sebagai parameter ketika mengulangi keabnormalan. Ini membolehkan menyebarkan maklumat tambahan dan membantu debug. Kaedah yang lebih disyorkan adalah menggunakan daripada
<code class="language-csharp">try { // 这里发生错误的代码 } catch (Exception ex) { throw; // 保留完整的堆栈跟踪 }</code>
. throw;
Atas ialah kandungan terperinci Bagaimana untuk mengekalkan jejak tumpukan dan innerexception apabila membuang semula pengecualian dalam .net?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!