Linux的錯誤處理的一些吐嘈

2021-05-23 23:15:10 字數 624 閱讀 2127

linux裡面的一些函式很多返回-1(有指標的一般是null)作為錯誤的時候的返回值,同時返回了乙個errno的值。這個值有很多種定義,大家可以在man errno裡面看到。檔案不存在,許可權不夠等等……在posix以前沒引進執行緒概念的時候往往是這樣定義的:extern int errno;但是在多執行緒程式設計的環境中,為了避免乙個執行緒干擾另外乙個執行緒,往往改變成了extern int *__errno_location(void);

#define erron (*__location()); (*__errno_location()):

對於errno應該知道兩條規則:1.如果沒有出錯,其值不會被乙個清除。所以,只有在函式返回錯誤的時候,我們才能檢測errno的值。另外,errno的值不會被函式設定成為0.

在c標準裡面,定義了兩個函式:char *strerror(int errnum);該函式的作用是返回乙個錯誤號對應的錯誤字串。並且返回該串的指標。void perror(const char *msg);則是基於errno的當前值,在標準錯誤上列印一條訊息。我們可以fprintf(stderr, "eacces:%s/n", strerror(eacces));來列印錯誤,然後 errno = eacces,再perror("eacces:");兩者效果基本一樣。呵呵

錯誤處理的一些想法

錯誤處理在程式設計中是很重要的,可以在除錯,發布的時候少了很多麻煩,以往在做軟體的時候總是少了錯誤處理,導致使用者用來莫名其妙,在查詢問題的時候也是沒有頭緒 最近在總結一些錯誤處理技巧,總共有這麼一些方法 1.log log在關鍵的時刻可以救命的東西,因此我一直提議組裡的人多使用log,但是log記...

MySql錯誤處理 錯誤處理的例子

有幾種錯誤處理的宣告形式 如果任何錯誤 不是 not found 設定 l error 為 1 後繼續執行 declare continue handler for sqlexception set l error 1 如果發生任何錯誤 不是 not found 執行 rollback和產生一條錯誤...

MySql錯誤處理(三) 錯誤處理的例子

mysql錯誤處理 三 錯誤處理的例子 有幾種錯誤處理的宣告形式 如果任何錯誤 不是 not found 設定 l error 為 1 後繼續執行 declare continue handler for sqlexception set l error 1 如果發生任何錯誤 不是 not foun...