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;是不行的,因为异常类型不一样。

原文地址:https://www.cnblogs.com/HighFun/p/2756232.html