gpt4 book ai didi

c++ - 为什么我的 MFC 应用程序在我抛出异常时挂起?

转载 作者:可可西里 更新时间:2023-11-01 13:51:05 28 4
gpt4 key购买 nike

如果您从 MFC 对话框中抛出异常,应用程序将挂起,即使您的代码中有一个 catch block 。它拒绝响应鼠标或键盘,关闭它的唯一方法是使用任务管理器。

为什么我要发布这个问题

令我感到遗憾的是,有一个流行的收缩包装应用程序每次在模态对话框中遇到异常错误时都会挂起。当我们从整数错误代码大量转移到异常时,我负责选择 std::exception 作为抛出异常的基类。直到大量的工作投入到转换中,我们的测试才发现这个问题,到那时再改变已经来不及了。希望这个问题/答案可以防止有人犯同样的错误。

最佳答案

CDialog::DoModal 的代码通过禁用父窗口使对话框成为模态对话框。当对话框代码返回时,窗口将重新启用。有一个针对 CException* 错误的显式捕获,但没有针对任何其他类型的抛出异常;因此父窗口永远不会被重新启用。

更改您的代码以抛出指向从 CException 派生的任何异常的指针,您将解决问题。

关于c++ - 为什么我的 MFC 应用程序在我抛出异常时挂起?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/143006/

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