2
我看到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。
注意:代码有意生成异常。这是一个测试代码
你必须谈论像访问冲突异常s,这不是标准的C++异常 - 它们是结构化异常处理的一部分:http://www.gamedev.net/page/resources/_/technical/general-programming/the-visual-c-exception-model -r2488 – birryree
也许这与[SEH例外](http://www.codeproject.com/KB/cpp/seexception.aspx)有关?可能你也需要抓住他们。 –
注意:结构化异常不是C++异常(因此不属于该语言的一部分)。它们是操作系统的一部分,而不是语言,尽管DevStudio提供了语言的附加扩展来捕获和操作它们。 –