哪个数据类型不能作为c ++程序中的异常抛出

时间:2013-07-22 11:02:21

标签: c++ exception-handling

可以抛出类型为int,float,long或自定义数据类型(如类和结构)的异常。但是哪种数据类型不能在C ++中作为异常抛出?

1 个答案:

答案 0 :(得分:3)

异常无法抛出不完整的类型:

§15.1

  

如果临时是左值并且用于初始化匹配处理程序中命名的变量(15.3)。 如果异常对象的类型是不完整类型或指向不完整类型的指针(可能是cv-qualified),则程序格式不正确。除了这些限制和限制之外15.3中提到的类型匹配,throw的操作数被完全视为调用(5.2.2)中的函数参数或return语句的操作数。

§15.5

  

当抛出的对象是类对象时,即使复制/移动操作被省略,也应该可以访问复制/移动构造函数和析构函数(12.8)。

15.3.1处理异常

处理程序中的异常声明描述了可以导致输入该处理程序的异常类型。 异常声明不应表示不完整类型或右值引用类型。异常声明不应表示指向不完整类型的指针或引用,除void *,const void *,volatile void *或const volatile void *。