C語言實現異常處理

2021-06-20 20:54:04 字數 852 閱讀 5250

1.setjmp(j)設定「jump」點,用正確的程式上下文填充jmp_buf物件j。這個上下文包括程式存放位置、棧和框架指標,其它重要的暫存器和記憶體資料。當初始化完jump的上下文,setjmp()返回0值。

2. 以後呼叫longjmp(j,r)的效果就是乙個非區域性的goto或「長跳轉」到由j描述的上下文處(也就是到那原來設定j的setjmp()處)。當作為長跳轉的目標而被呼叫時,setjmp()返回r或1(如果r設為0的話)。(記住,setjmp()不能在這種情況時返回0。)

通過有兩類返回值,setjmp()讓你知道它正在被怎麼使用。當設定j時,setjmp()如你期望地執行;但當作為長跳轉的目標時,setjmp()就從外面「喚醒」它的上下文。

我封裝的異常處理庫也是按照上面總結的方法使用的,理解了上面的總結再看**就非常簡單了。

在需要丟擲異常的地方使用throw巨集丟擲異常,它兩個引數,乙個是異常型別,乙個是異常說明字串。也可以使用throwall來丟擲乙個任意型別的異常,但是此時只能使用except才能捕獲。

將可能出現異常的**段使用try包含起來。onexcept用來捕獲異常,它有乙個引數,標記需要捕獲什麼型別的異常。如果此時有異常產生,異常型別與onexcept要捕獲的型別一致能會捕獲到這個異常,否則拋棄。而如果使用except巨集則會捕獲任意型別的異常。

最後需要呼叫finally巨集來進行清理,包括釋放在try巨集內申請的記憶體空間。

乙個簡單的使用例子如下:

#include #include void fun(void* p)

int main()

onexception(1)

finally

return 0;

}

異常處理(三 C 語言異常處理)

1 c 異常處理語法 c 語言的後期改造者們,他們在標準c 語言中專門整合了異常處理的相關語法 與之不同的是,所有的c 標準庫異常體系都需要執行庫的支援,它不是語言核心支援的 當然,異常處理被加到程式語言中,也是程式語言發展和逐步完善的必然結果。我們看到,c 不是唯一整合異常處理的語言。c 的異常處...

異常處理(二 C語言的異常處理)

1 異常終止 標準c庫提供了abort 和exit 兩個函式,它們可以強行終止程式的執行,其宣告處於 標頭檔案中。這兩個函式本身不能檢測異常,但在c程式發生異常後經常使用這兩個函式進行程式終止。下面的這個例子描述了exit 的行為 code include include int main void...

C 語言實現比賽成績錄入和處理

思路梳理 1.要實現使用者根據輸入選擇想要的操作,首先需要乙個目錄介面 其次,編號對應相應的操作,應該通過switch語句來實現。2.輸入成績,應該儲存在乙個陣列中,易於進行排序等操作。3.要輸出最高分最低分,則需要進行排序操作,相信學習過c語言的同學,對排序並不陌生,此處 使用了氣泡排序法。4.輸...