C++遇到异常不一定会终止程序,得看catch内容。
如果是希望异常时有自己期望的return值,则不适合用异常机制。
比如下面的代码,若要在数组中未找到目标值20时做相应处理,则不需要使用异常的try catch机制。
std::vector<int> myvector(10);
try {
myvector.at(20)=100; // vector::at throws an out-of-range
}
catch (const std::out_of_range& oor) {
std::cerr << "Out of Range error: " << oor.what() << '\n';
}
会因为上述catch打印err消息,但是cpp.sh代码在线运行网站的运行结果却是无异常,应该是它不检查数组下标越界。在vs上是正常的。