网站大量收购独家精品文档,联系QQ:2885784924

第十一章(下篇)例外处理.ppt

  1. 1、本文档共34页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第十一章(下篇)例外处理.ppt

第十一章 (下篇) 例外處理 service-side: throw Exceptions client-side: try-and-catch 客戶端與服務端程式 例外處理(Exception Handling) double circle_area(int r) { if (r0) {return –1 ;} return 3.14*r*r; } void main() { double r ; cin r ; double a = circle_area(r) ; if (a == -1) { /*錯誤處理 */ } else cout a endl ; } } 例外處理 double circle_area(double r, bool suc) { if (r0) {cout “r0”; suc = false ;} suc = true ; return 3.14*r*r; } void main() { double r ; bool suc; cin r ; double a = circle_area(r, suc) ; if (suc == false) { /*錯誤處理 */ } else cout a endl ; } } 例外處理 double circle_area(double r, int error_code) { if (r 0) error_code = 1 ; if (r==0) error_code = 2 ; error_code = 0 ; return 3.14*r*r; } void main() { double r ; int error_code; cin r ; double a = circle_area(r, error_code) ; if (error_code == 0) cout a endl ; else if (error_code == 1) { /*錯誤處理 */ } else if ...... } 例外處理 double circle_area(double r) { if (r0) { cout “circle(): r0”; exit(1) ; } return 3.14*r*r; } void main() { double r ; cin r ; cout circle_area(r) endl ; } 缺點 錯誤發生時,服務端程式通知客戶端程式的方式千奇百怪,使用者窮於應付 服務端程式有時也參與錯誤處理,權責不清 縱使權責清楚,客戶端程式也將因處理錯誤而使可讀性大大降低 可讀性降低 // 完全無例外處理 void main() { double r, w, h, ta=0 ; cinrwh ; ta = circle_area(r) + rectangle_area(w,h); cout “result=“ ta endl; } ? 加上例外處理的結果 可讀性大幅降低 void main() { double r, w, h, ta=0 ; bool suc ; cin rwh; double a = circle_area(r, suc) ; if ( suc) { ta += a; } else {cout “error”; } a = rectangle_area(w, h) ; if (a == -1) { ....} else if (a == -2) {...} else if {ta += a; } cout “result=“ ta endl ; } 結論 平心而論,完全沒有錯誤處理的程式不論在發展時期或執行時期都將造成困擾。 錯誤處理既是必要的,是否有明確而一致的方式? C++, Java 客戶端: try-catch, 服務端: throw 例外發生時的權責 C++例外處理: 使用前 double circle_area(double r, int error_code) { if (r0) error_code = -1 ; error_code = 0 ; return r*r*3.14 ; } void main() { double r ; cin r ; int error_code ; double a = circle_area(r, error_code) ; if (error_code == -1) cout “error, code=“ x endl ; else cout a endl ; c

文档评论(0)

duyingjie1 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档