C++异常处理的实现
C语言提供对处理异常情况的内部支持。try,throw,catch语句就是C语言中用于实现异常处理的机制。
异常处理的语法:
throw表达式语法:
throw 表达式
try块语法
try
复合语句
catch(异常类型声明)
复合语句
catch(异常类型声明)
复合语句
…
如果某段程序中发现了自己不能处理的异常,就可以是哟偶那个throw表达式抛掷这个异常,将他抛掷给调用者。
catch里面的异常类型如果为…则catch子句处理任何类型的异常,这段处理程序必须是try块的最后一段处理程序。catch(…)应该放在最后,以保证上面的catch异常会被执行到。
异常接口声明:
为了加强程序的可读性使函数的用户能够方便地知道所使用的函数会抛掷哪些异常,可以在函数的声明中列出这个函数可能抛掷的所有异常类型:
void fun() throw(A,B,C,D); //ABCD为异常的类型
如果在函数的声明中没有包含异常接口声明,则此函数可以抛掷任何类型的异常,例如:
void fun();
一个不抛掷任何类型异常的函数可以进行如下的声明:
void fun() throw();
异常处理中的构造与析构:
C++可以为异常抛掷前构造的所有局部对象自动调用析构函数的能力。
创建一个异常类并在程序中捕获它:
class Expt
{
public:
Expt(){};
~Expt(){};
const char *ShowReason() const
{
return “Expt类异常”
}
}
int main(){
try{
throw Expt();
} catch(Expt E) {
cout << E.showReason() << endl;
}
}