Rumah >pembangunan bahagian belakang >C++ >Kenapa pengecualian yang tidak diawasi dalam aplikasi Visual Studio 2010 WinForms pada tingkap 64-bit kelihatannya hilang?

Kenapa pengecualian yang tidak diawasi dalam aplikasi Visual Studio 2010 WinForms pada tingkap 64-bit kelihatannya hilang?

Linda Hamilton
Linda Hamiltonasal
2025-02-01 22:21:12267semak imbas

Why Unhandled Exceptions Vanish in VS2010 WinForms Apps (64-bit Windows)

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:

  1. Pelarasan platform sasaran:

    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.

  2. Tetapan pengecualian debugger:

    dalam debug & gt; Pengecualian, periksa kotak "dibuang" untuk pengecualian CLR. Ini memaksa debugger untuk berhenti sejenak apabila pengecualian berlaku.

  3. Pengendalian Pengecualian Acara Load:

    Balut kod dalam pengendali acara di blok . Di blok Load, tamatkan permohonan untuk memastikan pengecualian diperhatikan. try-catch catch

  4. Pengendalian Pengecualian Global:

    Gunakan dalam kaedah anda. Ini menangkap pengecualian yang tidak diawasi dalam mod debug, tetapi mungkin mengurangkan keberkesanan acara Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException). Main() ThreadException

  5. Kajian Pengendali Acara:

    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

  6. Peningkatan Sistem Operasi:

    Menaik taraf ke Windows 8 atau kemudian sering menyelesaikan masalah yang berkaitan dengan WOW64 ini.

  7. Dengan melaksanakan salah satu penyelesaian ini, anda boleh debug dan mengendalikan pengecualian yang tidak diendahkan secara berkesan dalam aplikasi Visual Studio 2010 WinForms pada tingkap 64-bit.

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!

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