【发布时间】:2020-07-10 20:27:28
【问题描述】:
我正在尝试处理 Visual Studio Community 2019 中的异常,请注意,我不确定我的设置是否有错误,或者是因为我的代码。
我要处理的异常是 out_of_range。为了做到这一点,我将它放在一个 try 块中并捕获,但我无法处理。 程序运行时会提示一个窗口:Debug Assertion Failed! 表达式向量下标超出范围
#include <iostream>
#include <vector>
#include <stdexcept>
using namespace std;
int main() {
try {
cout << "throwing exception: \n";
throw 1;
}
catch (int i) {
cout << "exception happended!\n";
}
cout << "out of exception\n";
vector<int> v;
try {
cout << "throwing exception2: \n";
v[2];
}
catch (out_of_range e) {
cout << "Exception out of range\n";
cout << e.what();
}
catch (exception& d) {
cout << "General Exception\n";
cout << d.what();
}
catch (...) {
cout << "special excpetinon\n";
}
cout << "Exception handled!";
}
我能够处理的第一个异常并且程序继续运行,而在第二个异常中,程序停止并显示窗口错误。
我在调试模式下运行程序,使用默认设置:
我想以与第一个异常相同的方式处理第二个异常。 谢谢!
【问题讨论】:
-
你确定vector的[]会抛出异常吗?
-
哇,太快了。我以为你可以用类似于 java ArrayIndexOutOfBoundsException 的方式来处理它。谢谢!
-
在Debug构建中,迭代器调试功能默认开启。由
_HAS_ITERATOR_DEBUGGING宏控制。捕捉编程错误非常有帮助,关闭它不是一个好主意。如果您想测试您的异常处理代码,只需按 F5 继续运行程序。
标签: c++ visual-studio visual-studio-2019