我需要为一个研究项目学习 C++ 基础知识,并且我正在尝试错误/异常处理。我确实throw
成功地使用了该命令来预测可能发生的事件(例如除以零),但我不知道如何捕获意外异常。以这个示例代码为例:
#include <iostream>
#include <exception>
#include <stdexcept>
using namespace std;
void arrayOutOfBound()
{
int a[3] = {1, 2, 3};
try
{
cout << "This should not display: " << a[5] << endl;
}
catch(runtime_error &e)
/* catch(exception &e) // also does not work */
{
cout << "Error: " << e.what() << endl;
}
}
int main()
{
arrayOutOfBound();
}
我想我必须在throw
某处使用语句,但假设我真的不知道那a[5]
行不通(或者用户输入了这个索引并且我没有检查数组大小),那么我怎样才能防止程序崩溃呢?(这发生在 Visual C++ Express 2010 调试器中)
注意:如果我try { int result = a[5]; }
先在块外做,然后尝试cout << result
在最后使用,程序不会编译。编译器试图帮助我,但因此我无法尝试异常处理。