任何程序都難保會(huì)出現(xiàn)邏輯錯(cuò)誤或運(yùn)行異常。c++語言有專門的語句支持異常處理,從而使程序易于測試和處理錯(cuò)誤。
在原來c語言面向過程的程序設(shè)計(jì)中,用if.....else....語句也可以處理出現(xiàn)的異常。在面向?qū)ο蟮某绦蛟O(shè)計(jì)中,顯然要改變
這種方法。
在c++中用try,throw和catch語句來處理異常。(它們可以是語句,也可以是語句塊。)try語句用來定義異常,包含有
可能產(chǎn)生異常的語句。throw語句是拋擲異常,當(dāng)它檢測到異常,則拋擲它。catch語句是異常處理語句,當(dāng)異常被傳遞過來時(shí),catch
捕獲到它進(jìn)而處理它。catch語句需要有形參類型。若tacth語句中需要形參,則需要形式參數(shù),否則形式參數(shù)可有可無。但它是
嚴(yán)格匹配的。如果找不到與之匹配的catch語句,則程序調(diào)用abort()函數(shù)終止程序。
其使用大致如下:
......
try{
.....
throw a;
.....}
.....
catch(int a)
{.....}
可以有多個(gè)throw語句,每個(gè)throw語句拋擲的類型都要不同;對(duì)應(yīng)的可以有多個(gè)catch語句,每個(gè)catch語句的形參類型不同,它們的形參
與throw是相對(duì)應(yīng)的。需要特別注意:catch的形參類型是嚴(yán)格匹配的。如:
........
try{
int a=20;
.....
throw a;
}
......
catch(unsigned int)
{.......
}
.........
throw 和catch是不匹配的。
注意:1.try語句前不能出現(xiàn)catch語句。
2.拋擲語句throw與處理異常的catch語句可以出現(xiàn)在不同的函數(shù)中。但執(zhí)行時(shí),應(yīng)是先執(zhí)行throw,再執(zhí)行catch語句。
3.在程序中可以出現(xiàn)多路捕獲。