10.3捕获异常 catch子句的异常声明,函数参数声明类似,可以是按值传 送,也可以是按引用传递。如果 catch-子句的异常声明改为引用 声明,则 catch子句可以直接引用被 throw表达式创建的异常对 象,而不必创建自己的局部拷贝。对于类类型的异常,其异常 声明最好被声明为引用 catch(pushon Fulk<T> eob]t cerr<<”栈满”<<e0 bj value(<<”未压 栈”<<endl return 1 }
10.3 捕获异常 catch子句的异常声明,函数参数声明类似,可以是按值传 送,也可以是按引用传递。如果catch子句的异常声明改为引用 声明,则catch子句可以直接引用被throw表达式创建的异常对 象,而不必创建自己的局部拷贝。对于类类型的异常,其异常 声明最好被声明为引用。 catch(pushOnFull<T> & eObj){ cerr<<” 栈 满 ” <<eObj.value()<<” 未 压 栈”<<endl; return 1; }
10.3捕获异常 寻找匹配的 catch子句有固定的过程:如果 throw 表达式位于try块中,则检查与try块相关联的 catch-子 句列表,看是否有一个子句能够处理该异常,如果有匹 配的,则该异常被处理,如果找不到匹配的 catch子句, 则在主调函数中继续查找。如果一个函数调用在退出时 带有一个被抛出的异常,而且这个调用位于一个try块中 则检查与该try块相关联的 catch子句列表,看是否有 个子句匹配,如果有,则处理该异常,如果没有,则查 找过程在该函数的主调函数中进行。这个查找过程逆着 嵌套的函数调用链向上继续,直到找到处理该异常的 catch子句。只要遇到第一个匹配的 catch子句,就会进 入该 catch子句,进行处理,查找过程结束。國□回
10.3 捕获异常 寻找匹配的catch子句有固定的过程:如果throw 表达式位于try块中,则检查与try块相关联的catch子 句列表,看是否有一个子句能够处理该异常,如果有匹 配的,则该异常被处理,如果找不到匹配的catch子句, 则在主调函数中继续查找。如果一个函数调用在退出时 带有一个被抛出的异常,而且这个调用位于一个try块中, 则检查与该try块相关联的catch子句列表,看是否有一 个子句匹配,如果有,则处理该异常,如果没有,则查 找过程在该函数的主调函数中进行。这个查找过程逆着 嵌套的函数调用链向上继续,直到找到处理该异常的 catch子句。只要遇到第一个匹配的catch子句,就会进 入该catch子句,进行处理,查找过程结束