异常处理
抛出异常
异常处理的两个主要成分:异常的鉴定和抛出,以及异常的处理方式。
异常出现之后,正常的程序执行便被挂起(suspended),与此同时,异常处理机制开始搜索程序中有能力处理这一异常的地点。异常被处理完毕之后,程序的执行便会继续(resume),从异常处理点接着执行下去。
最简单的异常可以设计为整数或者字符串。大部分时候,被抛出的异常都属于特定的异常类(也许形成一个继承体系)。
提炼异常和捕获异常(Trying for an Exception & Catching an Exception)
可以利用单条或者一连串的catch
子句来捕获被抛出的异常对象。异常对象的类型会被拿来逐一和每个catch子句对比。如果类型符合,那么该catch子句的内容便会被执行。
catch(int errno){
//...
}
catch(const char * str){
//...
}
catch(iterator_overflow &iof){
//...
}
catch子句应该和try块相应。try块是以关键字try
作为开始,然后是大括号内的一连串程序语句。catch子句放在try块的末尾,这表示如果try块内有任何异常发生,便由接下来的catch子句加以处理。
标准异常(The Standard Exceptions)
标准库定义了一套异常类体系,其根部是名为exception的抽象基类。exception声明有一个what()
虚函数,会返回一个const char *
,用以表示被抛异常的文字描述。
(END)