Compiler Warning (level 4) C4571
Informasi:
catch(...)
semantik berubah sejak Visual C++ 7.1; pengecualian terstruktur (SEH) tidak lagi tertangkap
C4571 dihasilkan untuk setiap catch(...)
blok saat Anda menentukan /EHs
opsi pengkompilasi.
Keterangan
Saat Anda menentukan /EHs
opsi pengkompilasi, catch(...)
blok tidak menangkap pengecualian terstruktur. (Bagi dengan nol, atau pengecualian penunjuk null, misalnya.) Blok catch(...)
hanya menangkap pengecualian C++ yang dilemparkan secara eksplisit. Untuk informasi selengkapnya, lihat Penanganan Pengecualian.
Peringatan ini nonaktif secara default. Aktifkan peringatan ini untuk memastikan bahwa saat Anda mengkompilasi dengan /EHs
blok Anda catch (...)
tidak menangkap pengecualian terstruktur. Untuk informasi selengkapnya, lihat Peringatan pengkompilasi yang nonaktif secara default.
Anda dapat mengatasi C4571 dengan salah satu cara berikut:
Kompilasi dengan
/EHa
jika Anda masih ingin blok Andacatch(...)
menangkap pengecualian terstruktur.Jangan aktifkan C4571 jika Anda tidak ingin blok Anda
catch(...)
menangkap pengecualian terstruktur, tetapi Anda masih ingin menggunakancatch(...)
blok. Anda masih dapat menangkap pengecualian terstruktur menggunakan kata kunci penanganan pengecualian terstruktur (__try
, ,__except
dan__finally
). Tetapi ingat, ketika dikompilasi menggunakan/EHs
, destruktor hanya dipanggil ketika pengecualian C++ dilemparkan, bukan ketika pengecualian SEH terjadi.Ganti
catch(...)
blok dengan blok tangkapan untuk pengecualian C++ tertentu, dan secara opsional, tambahkan penanganan pengecualian terstruktur di sekitar penanganan pengecualian C++ (__try
,__except
, dan__finally
). untuk informasi selengkapnya, lihat Penanganan Pengecualian Terstruktur (C/C++) dan/EH
(Model Penanganan Pengecualian).
Contoh
Sampel berikut menghasilkan C4571.
// C4571.cpp
// compile with: /EHs /W4 /c
#pragma warning(default : 4571)
int main() {
try {
int i = 0, j = 1;
j /= i; // this will throw a SE (divide by zero)
}
catch(...) {} // C4571 warning
}
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk