程序的錯誤通常包括:語法錯誤、邏輯錯誤、運行異常。
下面分別介紹:
1. 語法錯誤:
這個不必多說,大家在之前的學習一定都知道,就是只程序代碼不符合語法要求,在編譯、鏈接時候就由編譯器提示出來的錯誤,好發(fā)現(xiàn)。
2. 邏輯錯誤:
這種情況,是指編譯沒問題,沒有錯誤,可以運行起來。但程序的輸出結果或執(zhí)行過程不如我們所愿,達不到預期的結果,這種錯誤就叫做邏輯錯誤,需要不斷的調試、測試來發(fā)現(xiàn)。
3. 運行異常:
運行異常(exception)是指程序在運行過程中由于意外的情況,造成的程序異常終止,比如內存不足、打開的文件不存在、除數(shù)為0的情況等等。
前面兩種我們都已經(jīng)知道,第三種則是我們本章要詳細展開講解的知識了。通常情況下,導致程序異常錯誤,雖然無法避免,但是確可以預料,進行預見性的處理,來避免程序崩潰,從而保障程序的健壯性。這種行為我們稱之為異常處理。
在過往學習中,我們捕獲和處理異常的方法也很多,比如通過if...else判斷調用函數(shù)的返回值,或在執(zhí)行代碼之前對關鍵的數(shù)據(jù)進行檢查等等,如果出現(xiàn)問題,則用exit()或abort()等函數(shù)來終止程序。
比如:
cin>>a>>b; if(b==0)//捕獲異常 { cout<<"Drivide 0!"<<endl; } else { cout<<a<<"/"<<b<<"="a/b<<endl; }
大家可以看到,在過往的學習中,我們往往通過if來進行判斷,從而對關鍵部分進行捕獲和預防,但這種方式在使用過程中往往會因為if判斷過多,使程序的易讀性降低,并且對于需要判斷函數(shù)返回值的情況,對于那些沒有返回值的函數(shù),就束手無策了,為此C++為我們提供了異常處理的方案。
C語言網(wǎng)提供由在職研發(fā)工程師或ACM藍橋杯競賽優(yōu)秀選手錄制的視頻教程,并配有習題和答疑,點擊了解:
一點編程也不會寫的:零基礎C語言學練課程
解決困擾你多年的C語言疑難雜癥特性的C語言進階課程
從零到寫出一個爬蟲的Python編程課程
只會語法寫不出代碼?手把手帶你寫100個編程真題的編程百練課程
信息學奧賽或C++選手的 必學C++課程
藍橋杯ACM、信息學奧賽的必學課程:算法競賽課入門課程
手把手講解近五年真題的藍橋杯輔導課程