爲了測試這個問題,我寫了一個最小化的Windows應用程序。如果我在WM_PAINT
處理程序中強制訪問衝突,則此異常永遠不會到達調試器。如果在沒有調試器的情況下啓動,訪問衝突也不會顯示出來。通常你應該得到Windows錯誤報告對話框。WM_PAINT中的訪問衝突未被捕獲
深入挖掘看來,user32.dll中的某些內容會捕獲所有傳入的異常。這是正常的行爲嗎?我能以某種方式控制它嗎?沒有捕獲所有的例外安全風險?至少它是令人討厭的地獄。
這是在Vista 64上的32位和64位應用程序。在XP上,異常似乎按預期處理。其他Windows消息也有同樣的問題。也許他們都是?
的WM_PAINT
處理程序:
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
*(int*)0 = 0;
EndPaint(hWnd, &ps);
break;
我知道,但這只是一個解決方案,如果使用調試器。處理Windows消息時可能會拋出的所有其他異常是什麼?你有任何官方的(或非官方的)文件或推理的變化嗎? –