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