C語言錯誤處理

2021-09-09 02:03:14 字數 1132 閱讀 7849

c語言錯誤處理

1、什麼是錯誤處理?

程式錯誤是指在軟體執行中因為程式本身有錯誤而造成的功能不正常、宕機、資料丟失、非正常中斷等現象。錯誤處理程式是指軟體系統中用於處理錯誤的程式。在程式語言中,錯誤處理模型一般可以分為:返回值模型、全域性錯誤標誌模型、恢復性模型和限制性模型。

2、c語言的錯誤處理

c程式設計師沒有異常機制,一般用返回值標識錯誤,判斷返回值進行錯誤的處理。

2.1 返回值表示出錯的常見情況

1、如果函式返回值是int ,並且返回的資料不可能是負數,直接返回-1表示出錯,非負數代表正常返回資料。

2、如果函式返回值是int ,但返回的資料也可能是負數;返回0代表正常,-1代表出錯。用指標型別的引數帶出返回的資料。

3、如果函式返回值是指標型別,返回null(0)代表出錯,其他代表正常。

4、如果函式不需要考慮出錯情況,可以用void返回值。

注:以上4中情況,不是絕對的,只是經驗的總結。比如:有些時候,返回-1代表錯誤的指標。

2.2 c標準的錯誤處理

c標準中,對於錯誤處理提供了乙個全域性變數和3個函式:

全域性變數:

errno --外部的全域性變數,用於儲存錯誤的編號。

函式:strerror()/perror()/printf() 都可以把錯誤的編號變成錯誤的資訊。

1、strerror()  --傳入乙個錯誤的編號,返回乙個錯誤的資訊

2、perror()    --列印當前的錯誤資訊(自動查詢errno得到的錯誤編號)

3、printf("%m")    --列印當前錯誤資訊(自動查詢errno)

errno的值,在呼叫函式時,如果函式出錯,errno就會改變;但在呼叫函式時,如果不出錯,errno的值不變。因此,不能用errno判斷某個函式是不是出錯,只能通過函式的返回值判斷是否出錯。errno的作用是出了錯之後,獲得具體的錯誤資訊。

注:errno不是所有的函式都使用,某些函式沒有使用(執行緒)

示例:fopen("a.txt") perror("opena");

fopen("b.txt") perror("openb");

C語言 錯誤處理

目錄 一 定義 二 顯示與 errno 相關的文字訊息的函式 1.perror 函式 2.strerror 函式 舉例 三 被零除的錯誤 舉例 c 語言不提供對錯誤處理的直接支援,但是作為一種系統程式語言,它以返回值的形式允許您訪問底層資料 在發生錯誤時,大多數的 c 或 unix 函式呼叫返回 1...

C語言錯誤處理

include include include 1 include 使用assert 函式 void assert scalar expression a 引數型別為 scalar 標量 標量代表原子型別。如 int char 等非復合型別資料。此鏈結詳細解釋了標量和復合型別 b assert 的引...

C 錯誤處理

語言不提供對錯誤處理的直接支援,但是作為一種系統程式語言,它以返回值的形式允許您訪問底層資料。在發生錯誤時,大多數的 c 或 unix 函式呼叫返回 1 或 null,同時會設定乙個錯誤 errno,該錯誤 是全域性變數,表示在函式呼叫期間發生了錯誤。您可以在 errno.h 標頭檔案中找到各種各樣...