Можно ли поймать ошибку внутри WindowProc
Перезвоните? try
/ catch
не работает Похоже __try
__except
а также аппаратное исключение (AV
, например) тоже не работает.
Обновить:
Я понял, что на самом деле это можно бросить исключение в WindowProc
перезвонить и поймать его catch
блок снаружи WindowProc
, Проверено и работает на Windows XP x86
, Я нашел заданный вопрос 64-битные исключения в WndProc молча терпят неудачу Проблема, кажется, существует только на Windows 7 x64
(и в соответствии с этим вопросом на других версиях Windows x64 тоже).
Так что вопрос, можно ли как-то бросить исключение в WindowProc
и поймать это с catch
блок снаружи WindowProc
? Я установил исправление Microsoft, установил DisableUserModeCallbackFilter
1 в реестре, и лучшее, что я получаю, FATAL_USER_CALLBACK_EXCEPTION
, не мое исключение.
Документация MSDN для WindowProc содержит подробную информацию об исключениях, генерируемых / распространяемых из WindowProc. Кажется, что исключения распространяются только в 32-разрядных версиях Windows.
Однако ваш оригинальный вопрос отличается от вопроса в вашем обновлении. Первый был о привлекательный исключения в WindowProc, и это всегда будет работать нормально. Второй о бросание исключения из WindowProc.
Я не уверен насчет полезности / необходимости второго. Оконная процедура обычно вызывается в результате:
Других решений пока нет …