c之錯誤處理

2021-08-15 13:04:18 字數 1618 閱讀 7068

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

所以,c 程式設計師可以通過檢查返回值,然後根據返回值決定採取哪種適當的動作。開發人員應該在程式初始化時,把 errno 設定為 0,這是一種良好的程式設計習慣。0 值表示程式中沒有錯誤。

c 語言提供了perror()strerror()函式來顯示與errno相關的文字訊息。

讓我們來模擬一種錯誤情況,嘗試開啟乙個不存在的檔案。您可以使用多種方式來輸出錯誤訊息,在這裡我們使用函式來演示用法。另外有一點需要注意,您應該使用stderr檔案流來輸出所有的錯誤。

#include

#include

#include

extern

interrno

;int

main

()else

return0;

}

當上面的**被編譯和執行時,它會產生下列結果:

錯誤號:2通過

perror

輸出錯誤:

nosuch file

ordirectory

開啟檔案錯誤:

nosuch file

ordirectory

在進行除法運算時,如果不檢查除數是否為零,則會導致乙個執行時錯誤。

為了避免這種情況發生,下面的**在進行除法運算前會先檢查除數是否為零:

#include

#include

main

()quotient

=dividend

/divisor

;fprintf

(stderr

,"quotient 變數的值為 : %d\n"

,quotient

);exit(0

);}

當上面的**被編譯和執行時,它會產生下列結果:

除數為

0退出執行...

通常情況下,程式成功執行完乙個操作正常退出的時候會帶有值 exit_success。在這裡,exit_success 是巨集,它被定義為 0。

如果程式中存在一種錯誤情況,當您退出程式時,會帶有狀態值 exit_failure,被定義為 -1。所以,上面的程式可以寫成:

#include

#include

main

()quotient

=dividend

/divisor

;fprintf

(stderr

,"quotient 變數的值為: %d\n"

,quotient

);exit

(exit_success

);}

當上面的**被編譯和執行時,它會產生下列結果:

quotient 

變數的值為

:4

C 錯誤處理

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

LR之錯誤處理

1.指令碼的健壯性 乙個健壯的指令碼應該能捕獲一些錯誤資訊,並對這些資訊進行相關的處理,否者一旦發生較大錯誤就只能退出執行了 2.vugen的處理機制 分為兩種 遇到錯誤,停止執行,退出執行 另一種是忽略錯誤,繼續執行下去 相關設定可以在run time settings 裡進行 3.lr cont...

C語言錯誤處理

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