C 異常處理的那些事

2021-07-24 03:15:18 字數 975 閱讀 7859

abort()函式是c++的乙個錯誤處理函式,實現方式是向標準錯誤流(cerr)傳送「abnormal program termination"(不同作業系統內容可能有差別)。

使用try.....catch......模式時如果throw的異常沒被catch到,程式最終會呼叫abort()函式。

exception類:虛基類,包含乙個what()虛擬成員,返回乙個字串。

exception是其他異常類的基類。

重寫what()

const char* what()

c++中定義的基於exception的異常:

1.stdexcept

標頭檔案stdexcept定義了幾個異常類

以logic_error為例,這些類建構函式接受乙個string物件作為引數,該引數提供what方法以c-風格字串方式返回字元的字元資料。

logic_error系列異常型別有:

runtime_error

domain_error(定義域錯誤)

invalid_argument(無效引數)

length_error(長度錯誤)

out_of_bounds(索引錯誤)

logic_error(邏輯錯誤)

上述類名稱指出了它用於報告的錯誤型別

runtime_error

系列異常型別:

range_error

overflow_error

underflow_error

一般而言,logic_error系列異常表明存在可以通過程式設計修復的問題,而runtime_error系列異常表示存在無法避免的問題。

2.bad_alloc異常和new

對於使用new導致的記憶體分配問題,c++處理方式是讓new引發bad_alloc異常。標頭檔案new包含bad_alloc()類的宣告。

最後,catch(...)會攔截到所有未被前面catch到,而自己又不知道什麼原因的錯誤。

C語言預處理那些事

c 檔案 i 檔案 s 檔案 o 檔案 可執行檔案 預處理 編譯 彙編 鏈結step1 預處理階段生成.i檔案 gcc o helloworld.i helloworld.c e 標頭檔案在預處理階段都被放置到了.i檔案的上方 include 去掉了 存在的是所有的.h檔案中的內容 巨集的替換是不考...

C 的那些事

面試總結一 1.sizeof的題 沒找到原題,找到乙個類似的如下 char str new char 100 sizeof str 答 在c c 裡陣列作為引數時傳遞的實際上是指向陣列第乙個元素的指標,因此sizeof str 返回的是指標的大小,即4。推薦於2016 11 04 03 14 03最...

C 編譯那些事

最近想從pcl庫中繼承類進行改寫,然後遇到了很多問題,這裡記錄一下,自己是菜鳥,編譯什麼的都不太懂。我們一般都是.cpp和.h的形式,pcl是在.h中定義,然後在.hpp中實現,cpp的作用我現在也沒搞明白,還有涉及預編譯什麼的,蒙 從庫的.h和.hpp分別複製了檔案出來,命名成自己的,繼承類也改了...