Bagikan melalui


CA2201: Jangan munculkan jenis pengecualian yang dicadangkan

Properti Nilai
ID Aturan CA2201
Judul Jangan menaikkan jenis pengecualian yang dipesan
Golongan Penggunaan
Perbaikan bersifat disruptif atau non-disruptif Merusak
Diaktifkan secara default di .NET 8 Tidak

Penyebab

Metode meningkatkan jenis pengecualian yang terlalu umum atau yang dicadangkan oleh runtime.

Deskripsi aturan

Jenis pengecualian berikut terlalu umum untuk memberikan informasi yang memadai kepada pengguna:

Jenis pengecualian berikut dicadangkan dan harus dilemparkan hanya oleh runtime bahasa umum:

Jangan melemparkan pengecualian umum

Jika Anda melemparkan jenis pengecualian umum, seperti Exception atau SystemException, dalam pustaka atau kerangka kerja, ini memaksa konsumen untuk menangkap semua pengecualian, termasuk pengecualian yang tidak diketahui yang tidak mereka ketahui cara menanganinya.

Sebagai gantinya, lemparkan jenis yang lebih turunan yang sudah ada dalam kerangka kerja, atau buat jenis Anda sendiri yang berasal dari Exception.

Melemparkan pengecualian tertentu

Tabel berikut menunjukkan pengecualian mana yang akan dilemparkan untuk berbagai jenis argumen yang tidak valid, termasuk parameter nilai di set pengaktor properti.

Argumen tidak valid Pengecualian
null Referensi ArgumentNullException
Di luar rentang nilai yang diizinkan (seperti indeks untuk koleksi atau daftar) ArgumentOutOfRangeException
Nilai tidak valid enum InvalidEnumArgumentException
Berisi format yang tidak memenuhi spesifikasi parameter metode (seperti string format untuk ToString(String)) FormatException
Jika tidak, tidak valid ArgumentException

Tabel berikut ini memperlihatkan pengecualian mana yang akan dilemparkan untuk berbagai jenis operasi yang tidak valid.

Operasi tidak valid Pengecualian
Operasi tidak valid untuk status objek saat ini. InvalidOperationException
Operasi dilakukan pada objek yang telah dibuang. ObjectDisposedException
Operasi tidak didukung (seperti ditimpa Stream.Write dalam aliran yang dibuka untuk dibaca). NotSupportedException
Konversi akan mengakibatkan luapan (seperti dalam kelebihan beban operator cast eksplisit). OverflowException

Untuk semua situasi lainnya, pertimbangkan untuk membuat jenis Anda sendiri yang berasal dari Exception dan melemparkan itu.

Cara memperbaiki pelanggaran

Untuk memperbaiki pelanggaran aturan ini, ubah jenis pengecualian yang dilemparkan ke jenis tertentu yang bukan salah satu jenis yang dipesan.

Kapan harus menekan peringatan

Jangan menyembunyikan peringatan dari aturan ini.