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