第十五章C之异常处理.pptVIP

  1. 1、本文档共63页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第十五章C之异常处理

int main() { //ff(); try{ int j=0; double d=2.3; char str[20]=Hello; string str1=String; coutPlease input a exception number: ; int a; cina; switch(a){ case 1: throw d; case 2: throw j; case 3: throw str; case 4: throw A(); case 5: throw B(); case 6: str1+=6; throw str1; case 7: str1+=7; throw (string *)str1; case 8: throw(new CExp(CExp)); default: coutNo throws here.\n; } }catch(int){ coutint exception.\n; }catch(double){ coutdouble exception.\n; }catch(char* ss){ coutchar* exception. ssendl; }catch(A){ coutclass A exception.\n; }catch(B){ coutclass B exception.\n; }catch(string str){ coutstr.c_str()endl; }catch(string* str11) { coutddffendl; }catch(CExp *e) { coute-nameendl; delete e; } coutThats ok.\n; } * * * * * * * * * * 在这种简单应用的场合,没必要使用异常,可以用下列代码替代: if(!in){ cout“Error Opening File”argv[1]“\n”; return 1;} for(string s; getline(in, s); coutsendl );} 15.2.3 跨越函数的异常处理 在f1502.cpp中,是在出现错误时,从出现错误处到处理错误处,沿着函数调用的足迹,一步步往上返回,几经周折后,出错信息早已丢失,剩下的只有出错状态,程序f1504.cpp改写为异常处理方式处理,就可以实现跨函数的大跳转了: f1504.cpp #includefstream #includeiostream using namespace std; void procFileName(string s); void procOpenMode(string s); void openIn(string s); void openOut(string s); int main(){ procFileName(iabc); procFileName(oabc);} void procFileName(string s){ try{ for(char c=0; c=9; c++) procOpenMode(s + c+.txt);} catch(string s){ couterror opening s not existed.\n;}} void procOpenMode(string s){ if(s[0]==i) openIn(s); else openOut(s);} void openIn(string s){ ifstream in(s.c_str()); if(!in) throw s+ inFile; for(string line; getline(in, line); coutline\n);} void openOut(string s){ fstream out(s.c_str(),ios::in|ios::out|ios::ate); if(!out) throw s+string( outFile); outs+ outFile is ok.\n; couts+ is here.\n;} 15.3.1 类型匹配 try语句中,涉及到类的,本质上都是函数调用。 throw A() 异常机制与函数机制正交(互不干涉),但捕捉的方式是基于类型匹配

文档评论(0)

118books + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档