10.6.2 特殊异常处理
1.类bad_exception
类bad_exception的声明形式为:
类bad_exception用于定义被抛出异常对象的类型。其构造函数为:
功能:构造类bad_exception的对象。提示:对于新构造的对象,调用what()函数时,结果是预先定义的。
上述两个函数用以实现类bad_exception的对象的备份,即构造并产生新的对象。
函数返回值是已定义的NTBS。返回的信息是以空(NULL)为结束标识符的多字节字符串。此函数也适用于宽字节的转换和显示。
2.unexpected_handler
当函数尝试抛出一个异常时(该异常并未在异常说明中列出),句柄函数会通过unex-pected()函数调用。
一个非期望的句柄(unexpected_handler)不会被返回。默认的unexpected_handler调用会终止。
3.set_unexpected
功能:创建使用指针f指定的函数,作为当前的unexpected_handler句柄。值得注意的是,f不应该是空指针,函数返回值是之前的unexpected_handler型句柄。
4.unexpected
unexpected函数的声明形式为:
当函数存在时,是通过异常实现调用的;也可以在程序中直接调用。在ISO/IEC14882C++标准中,此段英文原文应该是:“Called by the implementation when a function exits via an exception not allowed by its exception specification.May also becalled directly by the program.”
评估throw表达式之后,即可快速、有效地调用unexpected_handler类型函数。通常此函数在执行过程中被调用,或者调用当前unexpected_handler;也可以在程序中直接调用。