Amalan terbaik untuk menangkap berbilang pengecualian pada masa yang sama
Dalam C#, menangkap semua pengecualian secara langsung menggunakan System.Exception
biasanya tidak disyorkan. Amalan terbaik adalah dengan hanya menangkap pengecualian khusus yang diketahui wujud. Walau bagaimanapun, pendekatan ini boleh membawa kepada kod berlebihan apabila mengendalikan berbilang pengecualian yang dijangkakan.
Contohnya:
<code class="language-csharp">try { WebId = new Guid(queryString["web"]); } catch (FormatException) { WebId = Guid.Empty; } catch (OverflowException) { WebId = Guid.Empty; }</code>
Kod di atas mempunyai struktur berulang. Kaedah yang lebih ringkas ialah menggunakan System.Exception
untuk menangkap semua pengecualian, dan kemudian gunakan pernyataan switch
untuk membezakan jenis pengecualian:
<code class="language-csharp">catch (Exception ex) { switch (ex) { case FormatException: case OverflowException: WebId = Guid.Empty; break; default: throw; // 将未处理的异常重新抛出 } }</code>
Pendekatan ini mengendalikan berbilang pengecualian yang diketahui dengan cekap sambil mengekalkan keupayaan untuk membuang pengecualian yang tidak dijangka.
Sila ingat bahawa menangkap System.Exception
sebagai amalan umum masih tidak disyorkan. Hanya tangkap dan kendalikan pengecualian yang dijangkakan dengan sewajarnya.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengendalikan Pelbagai Pengecualian yang Dijangka dengan Cekap dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!