catch(...)实际上是否捕获了所有异常?

时间:2011-11-21 06:07:05

标签: c++ windows visual-studio stl

我看到catch(...)没有捕获所有异常,并且在最终用户上抛出恼人的pop。

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。

注意:代码是故意生成异常。这是一个测试代码

1 个答案:

答案 0 :(得分:7)

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