我看到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。
注意:代码是故意生成异常。这是一个测试代码
答案 0 :(得分:7)
您的代码可能会生成访问冲突,在VC ++中不会成为标准异常,它们属于结构化异常,您也可以捕获但需要使用不同的机制: