c 錯誤處理

來源:互聯網
上載者:User

標籤:

當UNIX函數出錯時,常常返回一個負值,而且整型變數errno被賦值為一個含有附加資訊的編碼。

 errno 作為一個整型左值,可以是一個整型變數,也可以是一個返回整型指標的函數。

 多線程環境中用 

  extern int *__errno_localtion();   #define errno (*__errno_location())

 

取代了早期的

 

 extern int errno;

 

 我們可以用 

 char *strerror(int errnum)

函數擷取錯誤資訊字串形式。

 很多C模組的錯誤提示都繼承了這一思路,這裡提供了一個小DEMO

enum add_error{  add_error_success,  add_error_invalid,  add_error_overflow,};  static int errno_add; static const char *add_error_str[] = {  "success",  "the param is invalid",  "the result is overflow"}; int add(int a,int b){  if(a < 0|| b < 0){    errno_add = add_error_invalid;    return -1;  }    if(a > 100 || b > 100){    errno_add = add_error_overflow;    return -1;  }  return a+b;} int add_error_get(){  return errno_add;} const char *add_error_desc(int err){  return add_error_str[err];}

 

關於錯誤處理

  致命錯誤: 列印錯誤記錄檔,結束進程。

  資源性非致命錯誤:過一段時間,重試。

 

c 錯誤處理

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.