gpt4 book ai didi

c++ - 异常被 Win32 消息调度程序捕获的问题

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:20:05 25 4
gpt4 key购买 nike

这是一个非常低级的问题,但也许这里有人有一些见解......

我遇到了一个问题,未处理的 SEH 异常(例如访问冲突)似乎在 Win32 消息调度级别被捕获,而不是终止程序。我找到了以下引用博客,它解释了问题,但仅在 WM_TIMER 消息的上下文中:http://bugswar.blogspot.com/2010/07/why-its-not-crashing.html

我在 Win 2008R2 和“正常”消息(例如:WM_COMMAND 等)上遇到了问题。我怀疑可能是 Windows 试图通过屏蔽异常来“帮助”,但我希望它出错; “继续并忽略”行为通常会导致应用程序出现问题。我意识到我可以尝试将每个函数包装在 try/catch 中,并使用编译器选项/EHa 将 SEH 异常转换为 C++ 异常(这本身是非常令人沮丧和危险的),但这显然不是最佳选择。

根据引用的博客,TIB 结构 (http://en.wikipedia.org/wiki/Win32_Thread_Information_Block) 中的 AppCompatFlags2 中有一个标志,它可以导致 Win32 处理程序不捕获/丢弃 SEH 异常,但是我不知道如何设置/启用它。有人对此有任何见解吗?是否有我可以启用的 AppCompat 设置,让 Windows 不捕获和忽略异常?

最佳答案

我认为这是设计使然,但显然考虑不够周密。使某些遗留应用程序“正常运行”的尝试可能是不明智的尝试。

您可以在 Windows 7 SP1 中覆盖此行为;我在这方面写了更多in this stackoverflow answer .

关于c++ - 异常被 Win32 消息调度程序捕获的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4001776/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com