Rumah >pembangunan bahagian belakang >C++ >Kenapa pengecualian yang tidak diawasi dalam aplikasi Visual Studio 2010 WinForms pada tingkap 64-bit kelihatannya hilang?
Visual Studio 2010: Windows 64-bit WinForms Exception Handling Enigma
Masalah yang ingin tahu timbul di Visual Studio 2010: Pengecualian yang tidak diawasi dalam aplikasi WinForms yang berjalan pada tingkap 64-bit sering hilang dengan senyap. Permohonan terus melaksanakan tanpa mesej ralat yang dijangkakan atau pemecahan debugger.
Memahami punca akar
Tingkah laku ini dikaitkan dengan lapisan Windows '"Wow64", yang memancarkan kod 32-bit pada sistem 64-bit. Apabila pengurus tetingkap 64-bit mencetuskan acara (seperti acara), Wow64 memintas kod proses 32-bit. Pengecualian yang tidak diasingkan dalam kod yang dipintas ini bertopeng, menghalang debugger daripada menangkap mereka. Load
Penyelesaian dan Penyelesaian
Beberapa strategi dapat menangani isu ini:
Tukar "sasaran platform" projek kepada "anycpu" (dalam Project Properties & gt; membina). Ini menjadikan aplikasi proses 64-bit, melangkau WOW64. Nota: Ini mungkin menyebabkan masalah keserasian dengan ketergantungan 32-bit.
dalam debug & gt; Pengecualian, periksa kotak "dibuang" untuk pengecualian CLR. Ini memaksa debugger untuk berhenti sejenak apabila pengecualian berlaku.
Balut kod dalam pengendali acara di blok . Di blok Load
, tamatkan permohonan untuk memastikan pengecualian diperhatikan. try-catch
catch
Gunakan dalam kaedah anda. Ini menangkap pengecualian yang tidak diawasi dalam mod debug, tetapi mungkin mengurangkan keberkesanan acara Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException)
. Main()
ThreadException
Pertimbangkan jika kod bermasalah keperluan berada dalam acara . Acara ini tidak selalu penting, dan menggunakannya tidak perlu, terutamanya dalam VB.NET, boleh mengaburkan pilihan pengendali acara yang lebih baik.
Load
Menaik taraf ke Windows 8 atau kemudian sering menyelesaikan masalah yang berkaitan dengan WOW64 ini.
Atas ialah kandungan terperinci Kenapa pengecualian yang tidak diawasi dalam aplikasi Visual Studio 2010 WinForms pada tingkap 64-bit kelihatannya hilang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!