CA2219: Jangan munculkan pengecualian dalam klausul pengecualian

Properti Nilai
ID Aturan CA2219
Judul Jangan memunculkan pengecualian dalam klausul pengecualian
Kategori Penggunaan
Perbaikan bersifat merusak atau tidak merusak Tidak melanggar, Melanggar
Diaktifkan secara default di .NET 10 Sebagai saran
Bahasa yang berlaku C# dan Visual Basic

Penyebab

Pengecualian dilemparkan dari klausa, filter, atau klausa kesalahan finally.

Deskripsi aturan

Ketika pengecualian dimunculkan dalam klausul pengecualian, itu sangat meningkatkan kesulitan debugging.

Ketika pengecualian dilemparkan dalam finally atau klausul kesalahan, pengecualian baru menyembunyikan pengecualian aktif, jika ada. Ini membuat kesalahan asli sulit dideteksi dan di-debug.

Ketika pengecualian dilemparkan dalam klausa filter, runtime menangkap pengecualian tanpa pemberitahuan, dan menyebabkan evaluasi filter menjadi false. Tidak ada cara untuk membedakan antara filter yang mengevaluasi ke false dan pengecualian yang dilemparkan dari filter. Ini membuatnya sulit untuk mendeteksi dan men-debug kesalahan dalam logika filter.

Cara memperbaiki pelanggaran

Untuk memperbaiki pelanggaran aturan ini, jangan secara eksplisit melemparkan pengecualian dari finally, filter atau klausa kesalahan.

Example

try
{
    // ...
}
finally
{
    // This code violates the rule.
    throw new Exception();
}

Kapan harus menekan peringatan

Jangan membungkam peringatan untuk aturan ini. Tidak ada skenario di mana pengecualian yang dimunculkan dalam klausul pengecualian memberikan manfaat bagi kode yang dijalankan.

CA1065: Jangan munculkan pengecualian di lokasi yang tidak terduga

Lihat juga