考虑以下代码:
try {
int *i = NULL;
i[100] = 20;
catch (...) {
std::cout << "Exception Caught";
}
运行这段代码时,它崩溃了(很明显,访问了一个 NULL 指针)。 虽然,在 Debug模式下,Visual Studio 声明未捕获异常,关于写访问冲突..也是可以理解的。
我以为会在这里捕获异常,但没有。
我的结论是不会抛出异常。
那么为什么 VS 会警告未捕获的异常?
当我想保护自己不受另一个程序员代码的影响,并想用 try-catch 包装对他的函数的调用时,这个问题就开始了,假设他可能正在做一些访问冲突。但是,如果我只能捕获明确抛出的异常,那我就完蛋了。 我可能有的唯一其他解释是,这是因为某种项目或编译器配置。 我在一个新的 C++ 控制台应用程序中运行它,它是 VS2005。
谢谢
最佳答案
为了让 catch(...) 捕获所谓的结构化异常,您需要在项目设置中启用它。
关于c++ - 关于 C++ 异常处理/抛出的说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3227417/