异常处理机制
判断数组是否下标越界
代码清单:
//异常处理机制
//数组出界问题
# include<iostream>
using namespace std;
//用户定义错误类型
class errType1{};
class errType2{};
//函数模板
template<class T>
T get(T a[], int n, int i) {
if (i < 0) throw errType1();//调用errType1的默认构造函数,throw不受类型影响
else if (i >= n) throw errType2();
return a[i];
}
//函数模板使用
//错误处理后会退出try,但仍然在main中,没有退出程序。
int main() {
int s[10] = { 8,7,5,9,6,3,2,6,14,25 };
try
{
cout << get(s, 10, 1) << endl;
cout << get(s, 10, 20) << endl;
cout << get(s, 10, -5) << endl;
cout << get(s, 10, 20) << endl;
cout << get(s, 10, 2) << endl;
}
catch(errType1)
{
cout << "less than 0" << endl;
}
catch (errType2)
{
cout << "too big" << endl;
}
cout << "work in main!" << endl;
return 0;
}
运行结果: