【发布时间】:2011-11-21 06:07:05
【问题描述】:
我看到 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。
注意:代码是有意生成异常的。这是一个测试代码
【问题讨论】:
-
您一定是在谈论诸如访问冲突之类的异常,它们不是标准 C++ 异常——它们是结构化异常处理的一部分:gamedev.net/page/resources/_/technical/general-programming/…
-
也许这与SEH exceptions有关?可能你也需要抓住它们。
-
注意:结构化异常不是 C++ 异常(因此不是语言的一部分)。它们是操作系统的一部分,而不是语言的一部分,尽管 DevStudio 提供了额外的语言扩展来捕获和操作它们。
标签: c++ windows visual-studio stl