catch(…)实际上捕获所有异常

Does catch(...) actually catch all exceptions?

本文关键字:异常 实际上 catch      更新时间:2023-10-16

我看到catch(…)没有捕捉到所有的异常,并且在最终用户身上抛出了一个令人讨厌的弹出。

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。

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

你的代码可能会产生访问违规,这在vc++中不是标准的异常,它们属于结构化异常的领域,你也可以捕获,但需要使用不同的机制:

  • http://msdn.microsoft.com/en-us/library/windows/desktop/ms680657 (v = vs.85) . aspx

  • 结构化异常处理