Bagikan melalui


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

  • Menumbuhkan kembali pengecualian tanpa menentukan pengecualian secara eksplisit. Untuk informasi selengkapnya, lihat CA2200.

  • Untuk menonaktifkan analisis kode sepenuhnya, atur EnableNETAnalyzers ke false dalam file proyek Anda. Untuk informasi selengkapnya, lihat EnableNETAnalyzers.

API yang Terpengaruh

Tidak terdeteksi melalui analisis API.