异常处理
- 抛出异常
- throw数据
- 抛异常对象
- 抛基本类型
- 注意 不能抛出局部指针或引用
- 注意 如果异常没有被捕获处理,程序就会被停止
- 捕获异常
-
try{ 可以抛出异常的代码 } catch()//根据数据类型进行捕获 { 处理异常,如果无法处理,可以继续抛出异常 }
-
- 注意 捕获异常的顺序是自上而下的,而不是最精准的匹配,针对子类异常捕获时要放在父类的前面
- 函数的异常声明
返回值类型 函数名(参数列表)throw(类型1,类型2...)
- 注意 如果不写异常声明,表示什么类型的异常都能抛出
- 注意 如果写了异常声明,表示只抛出某些类型的异常,一旦超出异常声明的范围,程序会直接无法捕获
- 注意
throw()
表示什么类型的异常都不会抛出
#include <iostream>
using namespace std;
void func(void)
{
throw 3.14;
throw -1;
}
int main()
{
try{
func();
}
catch(float f){
cout << "float" << f << endl;
}
catch(double lf){
cout << "double" << lf << endl;
}
}
运行结果
double3.14
设计异常类
class Error
{
int errno;
char errmsg[255];
public:
Error(int errno = -1,const char* msg = "unknow error")
{
this->errno = errno;
strcpy(errmsg,msg);
}
int getError(void)
{
return errno;
}
const char* getErrmsg(void)
{
return errmsg;
}
};