Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Mengendalikan Pelbagai Pengecualian yang Dijangka dengan Cekap dalam C#?

Bagaimanakah Saya Boleh Mengendalikan Pelbagai Pengecualian yang Dijangka dengan Cekap dalam C#?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-20 23:26:15246semak imbas

How Can I Efficiently Handle Multiple Expected Exceptions in C#?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn