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

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

Barbara Streisand
Barbara Streisandasal
2025-01-20 23:32:11533semak imbas

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

Kendalikan berbilang pengecualian dengan mudah

Amalan konvensional dalam pengendalian pengecualian secara amnya mengesyorkan mengelak daripada menangkap ralat System.Exception generik. Sebaliknya, adalah disyorkan untuk hanya mengendalikan pengecualian khusus yang "diketahui" kepada aplikasi. Walau bagaimanapun, pendekatan ini kadangkala membawa kepada pertindihan kod.

Pertimbangkan senario berikut:

<code class="language-csharp">try
{
    WebId = new Guid(queryString["web"]);
}
catch (FormatException)
{
    WebId = Guid.Empty;
}
catch (OverflowException)
{
    WebId = Guid.Empty;
}</code>

Untuk mengelakkan pertindihan ini, penyelesaian yang lebih elegan ialah menangkap kedua-dua pengecualian dengan satu blok tangkapan:

<code class="language-csharp">catch (Exception ex)            
{                
    if (ex is FormatException || ex is OverflowException)
    {
        WebId = Guid.Empty;
    }
    else
        throw;
}</code>

Kod ini menggunakan pernyataan if untuk mengenal pasti pengecualian khusus yang perlu dikendalikan. Kelebihan pendekatan ini ialah berbilang pengecualian boleh ditangkap sekaligus sementara masih membenarkan pengecualian yang tidak dijangka menyebarkan ke atas timbunan. Ini amat berguna apabila objek diubah suai beberapa kali dan perlu ditetapkan semula jika salah satu operasi gagal.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengendalikan Pelbagai Pengecualian Khusus 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