




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、C+ Programming CHAPTER 13 EXCEPTION HANDLING 113.1 Exception Handling13.2 Exception Matching 13.3 Constructors and Destructors in Exception Handling213.1 Exception HandlingAn exception is a run-time error caused by some abnormal condition.In C+, a function f can recognize conditions that identify ex
2、ceptions and then signal that an exception has occurred. This signaling process is called throwing an exception.313.1 Exception HandlingOnce thrown, an exception can be caught or handled by a function that invokes f by using a catch block. A catch block is an exception handler that occurs after a tr
3、y block, which is used to indicate interest in exceptions. 413.1 Exception Handling f() h()g()error spreadingfunction invokedcatching and handling errorcause and throw an errorWhy h( ) doest rectify the error?int *p=new int1000513.1 Exception HandlingThe perfect objective was to map exceptions to so
4、me other form of error propagation should a designer choose to do so.Not that it was always best to do so, but that it could be done.613.1 Exception Handlingthrowing exception .throw expression;.catching and handling exceptiontry expressioncatch(exception type) expressioncatch(exception type) expres
5、sion .713.1 Exception HandlingThe keyword throw creates an object that isnt there under normal program execution. Then the object is, in effect, “returned” from the function, even though that object type isnt normally what the function is designed to return.Each catch clause (exception handler) is l
6、ike a little function that takes a single argument of one particular type.813.1 Exception HandlingRemarks:A) Exception is made and thrown by throw block. B) The code segment that could cause an exception will be in the try block. C) The catch block will not invoked if there is not any exception in t
7、ry block, and the code next to the last catch block will be invoked.913.1 Exception HandlingD) If an exception is thrown, type-matched catch block will catch and handle it. E) If no catch block is matched, the function terminate will be invoked automatically and the program is aborted.1013.1 Excepti
8、on HandlingExample:#includeint Div(int x,int y);void main() try cout5/2=Div(5,2)endl;cout8/0=Div(8,0)endl;cout7/1=Div(7,1)endl; catch(int) coutexcept of deviding zero.n; coutthat is ok.n;int Div(int x,int y) if(y=0) throw y; return x/y;Output:5/2=2except of deviding zero.that is ok.Only the type of
9、“y” is matter!1113.2 Exception MatchingYou can list all types of exceptions in the definition of function.Example:void fun( ) throw(A,B,C,D);You can also define a function that can throw any type of exceptions.Example:void fun( ) throw( );1213.3 Constructors and Destructors in Exception HandlingThe
10、C+ Spirit:“ Trust the programmer”.An object comes into being only after it as been constructed.1313.3 Constructors and Destructors in Exception HandlingIf an exception is matched by the catch block, some thing will be done to handle it.A) Initializing the arguments. B) All the objects that have been
11、 constructed in the try block will be destructed automatically. C) The code segment next to the last catch block will be invoked.1413.3 Constructors and Destructors in Exception HandlingExample:class X public:Aa;Bb;Cc;void main( )X x;abc1513.3 Constructors and Destructors in Exception HandlingExampl
12、e:#include void MyFunc( void );class Expt public: Expt( ); Expt( ); const char *ShowReason( ) const return Expt; ;1613.3 Constructors and Destructors in Exception Handlingclass Demo public:Demo( );Demo( );Demo:Demo( ) coutConstructing Demo.endl;Demo:Demo( ) coutDestructing Demo.endl;1713.3 Construct
13、ors and Destructors in Exception Handlingvoid MyFunc( ) Demo D; coutThrow Expt in MyFunc() endl; throw Expt();int main( ) coutIn main function endl; try coutIn try block, MyFunc( ) is invoked endl; MyFunc( ); There will be some errors.1813.3 Constructors and Destructors in Exception Handling catch(
14、Expt E ) coutIn catch block endl; coutCatching the Expt ; coutE.ShowReason()endl; catch( char *str ) coutCatching the other exception:strendl; coutBack to main function endl; return 0;1913.3 Constructors and Destructors in Exception HandlingOutput:In main functionIn try block, MyFunc() is invokedCon
15、structing Demo.Throw Expt in MyFunc()Destructing Demo.In catch blockCatching the Expt ExptBack to main function20Exercise#include int main()void f1();tryf1();catch(double)cout“OK0!”endl;cout“end0”endl;lreturn 0;21void f1()void f2();tryf2();catch(char)cout“OK1!”endl;cout“end1”endl;l22void f2()void f3();tryf3();catch(int)cout“OK2!”endl;cout“end2”endl;l23void f3()double d=0;trythrow d;catch(float)cout“OK3!”endl;cout“end3”endl;l24mainf1()f2()f3()throw dcatch(char)not matchcatch(int)not matchca
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年高級經(jīng)濟(jì)師《人力資源管理》試題(網(wǎng)友回憶版)含答案
- 六年級上冊音樂教學(xué)計(jì)劃模板
- 餐飲企業(yè)員工勞動合同范本(含試用期工資調(diào)整規(guī)定)
- 病毒式用戶生成內(nèi)容營銷合同
- 成立分公司及區(qū)域市場拓展與維護(hù)協(xié)議
- 保險(xiǎn)業(yè)保險(xiǎn)科技市場趨勢分析合同
- 智能倉儲空間轉(zhuǎn)讓與物聯(lián)網(wǎng)技術(shù)應(yīng)用合同
- 老人健康預(yù)防課件
- 美術(shù)課件小學(xué)生
- 村居干部考試題目及答案
- 合格考海南生物試題及答案
- 2025年廣東省深圳市初中地理中考學(xué)業(yè)水平考試模擬卷(二)(含答案)
- 2024年遼寧省普通高等學(xué)校招生錄取普通類本科批(物理學(xué)科類)投檔最低分
- 鈑金門板修復(fù)流程
- (高清版)DB11∕T2333-2024危險(xiǎn)化學(xué)品生產(chǎn)裝置和儲存設(shè)施長期停用安全管理要求
- 安徽省2024年普通高校招生普通高職(???提前批院校投檔分?jǐn)?shù)及名次
- 重慶市地圖矢量動態(tài)模板圖文
- LY/T 2005-2024國家級森林公園總體規(guī)劃規(guī)范
- 2025年四川大學(xué)自主招生個(gè)人陳述的自我定位
- 2025年福建省建工集團(tuán)及下屬集團(tuán)招聘235人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 上海市混合廢塑料垃圾熱解處理項(xiàng)目可行性研究報(bào)告
評論
0/150
提交評論