查看完整版本: [-- 在C++中,通过 try catch(...) 如何取得实际的错误对象 --]

QTCN开发网 -> Qt基础编程 -> 在C++中,通过 try catch(...) 如何取得实际的错误对象 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

jerrybaxia 2020-12-23 09:46

在C++中,通过 try catch(...) 如何取得实际的错误对象

    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 2021-01-24 23:21
没有实际类型,只能三个点
连微软官方文档中都不建议用/EHa。。。。。

fsu0413 2021-01-24 23:25
其实我觉得,如果程序不依赖/EHa提供的异常处理的话,完全没有必要使用/EHa。
就算不用/EHa,还是可以用MSVC提供的__try那一套来捕获一些基于SEH的异常。


查看完整版本: [-- 在C++中,通过 try catch(...) 如何取得实际的错误对象 --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled