Rumah >pembangunan bahagian belakang >C++ >Kenapa pengecualian yang tidak ditindas ditindas dalam aplikasi WinForms VS2010 saya pada tingkap 64-bit?

Kenapa pengecualian yang tidak ditindas ditindas dalam aplikasi WinForms VS2010 saya pada tingkap 64-bit?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-02-01 22:11:09296semak imbas

Why Are Unhandled Exceptions Suppressed in My VS2010 WinForms App on 64-bit Windows?

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:

  1. 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.

  2. 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.

  3. 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()

  4. Gunakan : Application.SetUnhandledExceptionMode Dalam kaedah anda, tambah Main(). Ini menghalang gelung mesej daripada mengganggu pengendalian pengecualian semasa debugging. Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);

  5. Menilai semula penempatan pengendali acara: Pertimbangkan sama ada acara adalah tempat terbaik untuk kod anda. Pembina mungkin lokasi yang lebih sesuai. Load

  6. 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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn