程式的錯誤通常包括:語法錯誤、邏輯錯誤、運作異常。
以下分別介紹:
1. 語法錯誤:
這個不必多說,大家在之前的學習一定都知道,就是只程式碼不符合文法要求,在編譯、連結時候就由編譯器提示出來的錯誤,好發現。
2. 邏輯錯誤:
這種情況,是指編譯沒問題,沒有錯誤,可以運作起來。但程式的輸出結果或執行過程不如我們所願,達不到預期的結果,這種錯誤就叫做邏輯錯誤,需要不斷的調試、測試才能發現。
3. 運行異常:
執行異常(exception)是指程式在運作過程中由於意外的情況,造成的程式異常終止,例如記憶體不足、開啟的檔案不存在、除數為0的情況等等。
前面兩種我們都已經知道,第三種則是我們本章要詳細展開講解的知識了。通常情況下,導致程序異常錯誤,雖然無法避免,但是確可以預料,進行預見性的處理,來避免程序崩潰,從而保障程序的健壯性。這種行為我們稱之為異常處理。
在過往學習中,我們捕獲和處理異常的方法也很多,例如透過if...else判斷呼叫函數的回傳值,或在執行程式碼之前對關鍵的資料進行檢查等等,如果出現問題,則用exit ()或abort()等函數來終止程式。
比如:
cin>>a>>b;if(b==0)//捕獲異常{cout<<Drivide0!<<endl;}else{cout<<a<</<<b<<=a/b<< endl;}
大家可以看到,在過往的學習中,我們往往透過if來進行判斷,從而對關鍵部分進行捕獲和預防,但這種方式在使用過程中往往會因為if判斷過多,使程序的易讀性降低,並且對於需要判斷函數回傳值的情況,對於那些沒有回傳值的函數,就束手無策了,為此C++為我們提供了異常處理的方案。