在 C++中处理错误
Java語(yǔ)言最好的部分就在于其能充分利用和依賴(lài)異常。通過(guò)Java的異常,你可以非常有效的處理錯(cuò)誤情況。
?
不幸的是,在C++的很多類(lèi)庫(kù)中,并沒(méi)有把異常作為一個(gè)基本的部分。要想在C++中完成和Java中的異常處理過(guò)程同級(jí)別的功能,你需要非常仔細(xì)的在程序中設(shè)計(jì)異常處理。
首先,你需要在設(shè)計(jì)文檔中指定錯(cuò)誤處理。對(duì)大多數(shù)人來(lái)說(shuō),對(duì)錯(cuò)誤處理的設(shè)計(jì)一般都是在錯(cuò)誤發(fā)生后才進(jìn)行。你應(yīng)該在編寫(xiě)代碼之前就設(shè)計(jì)好針對(duì)每個(gè)函數(shù)的錯(cuò)誤處理。
一旦你知道了你的函數(shù)會(huì)拋出什么類(lèi)型的異常,你就應(yīng)該定義異常的等級(jí)了。這里要注意一點(diǎn),和Java不同,throw?聲明會(huì)拋出任何形式的東西。但是使用基本數(shù)據(jù)類(lèi)型不允許你進(jìn)行任何分級(jí)的捕獲操作,我建議不要使用。
如果你使用的類(lèi)庫(kù)中有自己的異常等級(jí),你就可以在它的基礎(chǔ)上來(lái)應(yīng)用了。然而,一般情況下你都會(huì)希望在這之上添加自己的異常等級(jí)。如果你使用的是標(biāo)準(zhǔn)的C++編譯器,你可以從標(biāo)準(zhǔn)庫(kù)中的異常等級(jí)開(kāi)始。
一定要記住,當(dāng)你捕獲一個(gè)異常時(shí),就會(huì)拋出另一個(gè)異常,所以異常鏈?zhǔn)莻€(gè)很重要的結(jié)構(gòu)。增加異常鏈就像增加一個(gè)構(gòu)造一樣容易。
不把異常和C風(fēng)格的返回錯(cuò)誤值混在一起是正確的做法,如果可能,盡量抽象C錯(cuò)誤消息函數(shù)和你的程序部分的接口。
C++有個(gè)特別的語(yǔ)法用來(lái)規(guī)范異常:
//聲明
void foo() throw (IOException);
//定義
void foo() throw (IOException){
???????//處理內(nèi)容
}
要注意的是聲明和定義都要遵循同樣的異常規(guī)范。不幸的是,C++的異常規(guī)范和Java的異常規(guī)范并不一樣。C++會(huì)給出一個(gè)std::unexpected異常,而不像Java那樣給出一個(gè)編譯錯(cuò)誤。還要注意一點(diǎn),C++的異常規(guī)范默認(rèn)是可以?huà)伋鋈魏萎惓?#xff0c;而Java默認(rèn)是不拋出異常。
轉(zhuǎn)載于:https://www.cnblogs.com/Ling-Lee/archive/2010/05/05/1728065.html
總結(jié)
以上是生活随笔為你收集整理的在 C++中处理错误的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: java.lang.OutOfMemor
- 下一篇: vc socket api建立TCP连接