C ++在期望out_of_range时没有引发异常

时间:2019-01-17 12:29:50

标签: c++

请考虑以下来源:

void ex8()
{
    vector<int> v;

    try
    {
        v.push_back(3);
        int i = v[1];
    }
    catch (exception& e)
    {
        cout << "pas bon !";
    }
}

执行时,Release中不会引发任何异常。在“调试”中,出现“调试断言失败”对话框。 我在Win 10上使用Visual Studio。

向量实现不应该抛出out_of_range异常吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

仅举一个[]at()

的示例
#include <iostream>
#include <vector>

int main()
{
  std::vector<int> v;

  v.push_back(123);
  v.resize(0);

  try {
    std::cout << "at() ";
    std::cout  << v.at(0) << std::endl;
  }
  catch (std::exception e) {
    std::cout << e.what() << std::endl;
  }

  std::cout << "[] " << v[0] << std::endl; // all can append

  return 0;
}

对我来说,死刑是

at() std::exception
[] 123