Rumah >pembangunan bahagian belakang >C++ >Kenapa pengecualian yang tidak ditindas ditindas dalam aplikasi WinForms VS2010 saya pada tingkap 64-bit?
Debugging Pengecualian yang tidak diawasi dalam aplikasi VS2010 WinForms 64-bit
Membangunkan aplikasi WinForms di VS2010 pada tingkap 64-bit boleh membentangkan cabaran: debugger mungkin gagal memaparkan pengecualian yang tidak dialami. Ini adalah isu yang diketahui berkaitan dengan lapisan emulasi Windows-on-Windows (WOW64).
Penyelesaian:
inilah cara menangani masalah yang mengecewakan ini:
sasaran anycpu (64-bit): Dalam sifat projek anda (Project & gt; Properties & gt; membina), menukar "sasaran platform" ke "anycpu" dan uncar "lebih suka 32-bit." Berjalan sebagai proses 64-bit asli memintas batasan WOW64.
Dayakan "Dibuang" untuk pengecualian CLR: Buka tetingkap Pengecualian (DEBUG & GT; pengecualian) dan periksa kotak "dilemparkan" untuk pengecualian bahasa umum (CLR). Ini memastikan debugger pecah pada asal pengecualian.
Mengendalikan pengecualian dalam peristiwa beban Form1 (atau pembina): bungkus kod anda dalam blok dalam pengendali acara try-catch
(atau, sebaik -baiknya, pembina). Dalam blok Form1_Load
, gunakan catch
untuk menamatkan permohonan dengan segera, memberikan maklum balas yang jelas. Application.Exit()
Gunakan : Application.SetUnhandledExceptionMode
Dalam kaedah anda, tambah Main()
. Ini menghalang gelung mesej daripada mengganggu pengendalian pengecualian semasa debugging. Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
Menilai semula penempatan pengendali acara: Pertimbangkan sama ada acara adalah tempat terbaik untuk kod anda. Pembina mungkin lokasi yang lebih sesuai. Load
Naik taraf (jika boleh): Versi Windows kemudian mungkin telah menangani isu WOW64 ini.
Memahami punca akar:
Kekurangan penglihatan pengecualian ini adalah quirk yang didokumenkan yang berpunca daripada kesukaran melewati pengecualian dari kod 32-bit ke 64-bit dalam persekitaran WOW64. Walaupun penyelesaian ini membantu, isu asas tetap menjadi subjek perbincangan berterusan antara pasukan Microsoft.Atas ialah kandungan terperinci Kenapa pengecualian yang tidak ditindas ditindas dalam aplikasi WinForms VS2010 saya pada tingkap 64-bit?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!