c++异常说明
1、函数异常
void fun() throw(runtime_error);表明该函数能够抛出一个runtime_error的异常。
void fun() throw();空说明表示该函数不抛出任何异常。
异常说明是函数声明的一个部分。声明处的异常和实现处的异常必须一样。
如果函数内部抛出了一个违反说明的异常,那么就调用unexpected函数
比如说
void f() throw()
{
throw exception();
}
上面的函数已经说明了不会抛出异常,但是还是抛出了一个异常,这时就会调用unexpected函数。
2、类的继承
当从一个类继承的时候,函数的异常也会从基类继承出来,如果基类是抛出了一个异常,那么子类也必须抛出这个异常,或者是这个异常的子集。
3、函数指针异常
void (*pf)(int)throw (runtime_error);
这说明该函数指针智能抛出runtime_error的异常。
当把一个函数的地址复制给函数指针的时候,抛出异常的类型也必须一样或者更加严格。
void fun(int)throw(runtime_error);
void fun1(int)throw();
void (*pf)(int)throw (runtime_error)= fun;是可以的,因为异常类型一样。
void (*pf)(int)throw (runtime_error) = fun1;是不行的,因为异常类型不一样。