C 異常處理入門

2021-10-05 08:05:01 字數 1442 閱讀 4727

先看如下**

void test02()

當你在main()中呼叫test02()時,很明顯會出現如下錯誤

因為除數不能為0,所以執行a/b時就會引發錯誤,然後程式就自動停止了。有無錯誤就停止,這到沒什麼,關鍵是這種使用者體驗不是很好,你想一下,當程式執行好好的時候,遇到錯誤,就彈出這麼乙個視窗,然後程式就終止了,這對使用者體驗很不好,為了解決這種問題,c++中引入了異常處理機制,讓程式猿能夠在**裡處理這種錯誤。明白了這點之後,我們應該在程式裡如何整合這種異常機制呢?

需要try()catch(){} 和throw配合,這是一套操作,請看如下**

int main()

catch (...)

system("pause");

return exit_success;

}

try裡面將可能要出錯的**寫到這裡面來,當裡面的**出錯後,那麼就會執行catch中的**。

這時候,你繼續編譯,然後執行,你會發現它又彈出了下面的錯誤,好像try...catch並沒有用

實際上我們的try...catch沒有錯,但想要起作用,還需要throw關鍵字的配合,test02()**改造如下

void test02()

int c = a / b;

}

**執行後,會列印如下內容

當b == 0 時,就會執行throw 1,throw 就表示丟擲乙個錯誤,然後這個錯誤由test02所在的catch中處理。這裡的1,是我隨便寫的返回資料型別,該型別會和catch 括號中的型別進行匹配,然後執行對應的**塊中的內容。比如說,我們例子中catch只有1個

(...)這表示任何型別,也就是說,不管你throw 後面跟什麼型別,都可以在這裡匹配到。

那麼我再將try...catch改造為如下

int main()

catch (int) //如果異常都沒有處理

catch (...)

system("pause");

return exit_success;

}

**執行後,將會列印如下

main 函式中 int型別異常捕獲

因為test02()中throw的資料型別是int ,因此它會優先匹配到catch()中的int ,然後執行對應**塊中的內容

C 異常處理入門 try和catch

目錄 開發程式是一項 燒腦 的工作,程式設計師不但要經過長期的知識學習和思維訓練,還要做到一絲不苟,注意每乙個細節和邊界。即使這樣,也不能防止程式出錯。專家指出,長期作息不規律 用腦過度的危害很大,可能會誘發神經衰弱 失眠等疾病。我就是受害者之一,曾被失眠困擾了好幾年,不但入睡困難,還容易早醒。程式...

C 之try catch 異常處理入門例項

在程式設計過程中,我們總是希望自己設計的程式是天衣無縫的,但這幾乎又是不可能的。即使程式編譯通過,同時也實現了所需要的功能,也並不代表程式就已經完美無缺了,因為執行程式時還可能會遇到異常,例如當我們設計乙個為使用者計算除法的程式時,使用者很有可能會將除數輸入為零,又例如當我們需要開啟乙個檔案的時候確...

C 學習39 異常處理入門(try和catch)

編譯器能夠保證 的語法是正確的,但是對邏輯錯誤和執行時錯誤卻無能為力,例如除數為 0 記憶體分配失敗 陣列越界等。這些錯誤如果放任不管,系統就會執行預設的操作,終止程式執行,也就是我們常說的程式崩潰 crash 優秀的程式設計師能夠從故障中恢復,或者提示使用者發生了什麼 不負責任的程式設計師放任不管...