2011-11-21 54 views
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。

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

+3

你必须谈论像访问冲突异常s,这不是标准的C++异常 - 它们是结构化异常处理的一部分:http://www.gamedev.net/page/resources/_/technical/general-programming/the-visual-c-exception-model -r2488 – birryree

+0

也许这与[SEH例外](http://www.codeproject.com/KB/cpp/seexception.aspx)有关?可能你也需要抓住他们。 –

+0

注意:结构化异常不是C++异常(因此不属于该语言的一部分)。它们是操作系统的一部分,而不是语言,尽管DevStudio提供了语言的附加扩展来捕获和操作它们。 –

回答