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:
try { WebId = new Guid(queryString["web"]); } catch (FormatException) { WebId = Guid.Empty; } catch (OverflowException) { WebId = Guid.Empty; }
Untuk mengelakkan pertindihan ini, penyelesaian yang lebih elegan ialah menangkap kedua-dua pengecualian dengan satu blok tangkapan:
catch (Exception ex) { if (ex is FormatException || ex is OverflowException) { WebId = Guid.Empty; } else throw; }
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!