• 3296阅读
  • 2回复

在C++中,通过 try catch(...) 如何取得实际的错误对象 [复制链接]

上一主题 下一主题
离线jerrybaxia
 

只看楼主 倒序阅读 楼主  发表于: 2020-12-23
    try {
        after();
   } catch(std::exception &exception) {
        QMessageBox::critical(this, tr("出现错误"), exception.what());
    } catch(...) {
        // TODO: 这里始何取得实际的错误类型
        QMessageBox::critical(this, tr("出现错误"), tr("出现致使错误"));
    }
因为编译器添加了
win* {
   QMAKE_CXXFLAGS_EXCEPTIONS_ON = /EHa
   QMAKE_CXXFLAGS_STL_ON = /EHa
}
所以在 Windows项目中可以捕获到系统级错误
但我用了N种类型,都无法正解的获取到错误的对象,也就没有办法根据错误对像进行出错提示
只能在 catch(...) 中进行获取,但这个... 又没有办法取得catch住的对象
那这里怎么来取得现在是catch(...)了什么错误呢?
谢谢
离线fsu0413

只看该作者 1楼 发表于: 2021-01-24
没有实际类型,只能三个点
连微软官方文档中都不建议用/EHa。。。。。
离线fsu0413

只看该作者 2楼 发表于: 2021-01-24
其实我觉得,如果程序不依赖/EHa提供的异常处理的话,完全没有必要使用/EHa。
就算不用/EHa,还是可以用MSVC提供的__try那一套来捕获一些基于SEH的异常。
快速回复
限100 字节
 
上一个 下一个