c++ - catch(...) 实际上捕获所有异常吗?

标签 c++ windows visual-studio stl

我看到 catch (...) 没有捕获所有异常,并且向最终用户抛出了一个恼人的弹出窗口。

size_t pos;
char *ptrDir="c:\\test";
std::string strDir = 
strDir.erase(strlen(ptrDir) - 1);
pos = strDir.find("Test");
try
{
    std::string strPat = strDir.substr(pos);
}
catch(...)
{
    std::cout<<"I am hiding Exception";
}

我正在使用 Visual Studio 2005、Windows XP。

注意:代码是有意产生异常的。这是一个测试代码

最佳答案

您的代码可能会产生访问冲突,这在 VC++ 中不会成为标准异常,它们属于结构化异常领域,您也可以捕获这种异常,但需要使用不同的机制:

关于c++ - catch(...) 实际上捕获所有异常吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8207910/

相关文章:

c++ - 有没有办法在命令行获得可读的 gcc 错误和警告输出?

windows - 没有网络访问权限的虚拟服务帐户,如 NT AUTHORITY\LocalService

windows - 双击时删除包含文件夹的bat文件?

c++ - Visual Studio 多线程调试

visual-studio - 什么决定了默认的启动项目?

c++ - 构建交叉编译器

java - 如何查看/监控我的 zeromq PUBlisher 的订阅者?

windows - Windows 批处理中的 if then 语句

C++:为什么要编译? (将 this-Reference 传递给基类)

c++ - 在 OpenGL 中,(如何)我可以在两个深度缓冲区之间进行深度测试?