c++ - 关于 C++ 异常处理/抛出的说明

标签 c++ exception

考虑以下代码:

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/

相关文章:

c++ - 指向单例的共享指针不能相互识别

c++ - istream::getline failbit 没有设置?

c# - 使用 Entity Framework 自动编号

java - 异常处理以确保全有或全无执行

java - 重写 Java 中的异常

c++ - e^x 的无限和收敛到一个不正确的值

c++ - 如何获取ipmi fru原始数据?

c++ - XCode 中的字符串 (C++)

java - 大容量应用程序服务器中的异常报告管道

python - 在 python 中定位(文件/行)构造函数的调用