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

Sat*_*bir 2 c++ windows stl visual-studio

我看到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";
}
Run Code Online (Sandbox Code Playgroud)

我使用的是Visual Studio 2005,Windows XP.

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

wkl*_*wkl 7

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