Peringatan CA2200: Rethrow untuk mempertahankan detail tumpukan
Aturan penganalisis kode .NET CA2200 diaktifkan, secara default, mulai dari .NET 5. Ini menghasilkan peringatan build untuk setiap catch
blok yang memunculkan kembali pengecualian dan pengecualian ditentukan secara eksplisit dalam throw
pernyataan.
Deskripsi perubahan
Mulai dari .NET 5, .NET SDK menyertakan penganalisis kode sumber .NET. Beberapa aturan ini diaktifkan, secara default, termasuk CA2200. Jika proyek Anda berisi kode yang melanggar aturan ini dan dikonfigurasi untuk memperlakukan peringatan sebagai kesalahan, perubahan ini dapat merusak build Anda.
Aturan CA2200 menandai kode di mana pengecualian ditumbuhi kembali dan variabel pengecualian ditentukan dalam throw
pernyataan. Ketika pengecualian dilemparkan, bagian dari informasi yang dikandungnya adalah jejak tumpukan. Pelacakan tumpukan adalah daftar hierarki panggilan metode yang dimulai dengan metode yang melempar pengecualian dan berakhir dengan metode yang menangkap pengecualian. Jika pengecualian ditumbuhi kembali dengan menentukan pengecualian dalam throw
pernyataan, jejak tumpukan dimulai ulang pada metode saat ini dan daftar panggilan metode antara metode asli yang melemparkan pengecualian dan metode saat ini hilang. Untuk menyimpan informasi pelacakan tumpukan asli dengan pengecualian, gunakan throw
pernyataan tanpa menentukan pengecualian.
Cuplikan kode berikut tidak menghasilkan peringatan untuk aturan CA2200. Namun, baris yang dikomentari akan memicu pelanggaran.
catch (ArithmeticException e)
{
// throw e;
throw;
}
Versi yang diperkenalkan
5.0
Tindakan yang direkomendasikan
Menumbuhkan kembali pengecualian tanpa menentukan pengecualian secara eksplisit. Untuk informasi selengkapnya, lihat CA2200.
Untuk menonaktifkan analisis kode sepenuhnya, atur
EnableNETAnalyzers
kefalse
dalam file proyek Anda. Untuk informasi selengkapnya, lihat EnableNETAnalyzers.
API yang Terpengaruh
Tidak terdeteksi melalui analisis API.