zhouqijie

异常处理



抛出异常

异常处理的两个主要成分:异常的鉴定和抛出,以及异常的处理方式。

异常出现之后,正常的程序执行便被挂起(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)