16.5 小结
本章对C++的异常和错误处理机制进行了讨论,很好地处理异常和错误能使程序更为完善,在程序设计时需要对代码可能出现的软硬件问题进行仔细的考虑,做好防错处理和出错补救。C++的throw-catch异常处理机制是个完整的体系,用以将异常抛出到更大的范围内统筹考虑,使得代码的结构更为清晰,异常处理更为方便。
关键字throw用于抛出异常,这将中断函数的执行,使得代码流程发生跳转,抛出的异常将被与try块并列的catch语句列表捕获,进行相应的处理,如果没有与异常匹配的catch块,库函数terminate将自动触发,结束整个程序,通过set_terminate库函数可以自定义terminate函数,同时,在函数定义时,为方便函数的使用者,C++引入了异常规范说明机制,明确限定了函数所抛出异常的类型,如果函数抛出的异常不在异常规范说明中,库函数unexpected将自动触发,同样,使用库函数set_unexpected可以自定义unexpected函数。
最后,本章简要介绍了auto_ptr智能指针的用法,同普通的指针不同,在智能指针对象过期被销毁时,其维护的(或说指向的)动态内存会被自动释放,这有效地解决了内存泄露的问题。