我們平時有這樣的需求,可能是c使用者的老習慣了,在底層的元件中更喜歡用返回錯誤碼的形式來告知使用者函式的呼叫狀態,一般來說,簡單用#define 乙個巨集來包裝下返回值。
#define err_system_init -23 // system initailized fail
比如,以上定義了乙個錯誤碼返回-23,意味著系統初始化失敗。但是巨集包含的資訊太少,有些時候,使用者不能如人意的理解錯誤原因。必須給這錯誤加以說明。所以就索性寫了乙個error類可以定義錯誤碼和相關錯誤資訊,並通過錯誤碼返回更詳細的說明:
1 #includeview code2 #include 3 #include 4
5class
error619
20//
auto-cast error to integer error code
21operator
int()
2223
private:24
intm_value;
25 std::string
m_message;
2627 typedef std::maperrormap;
28static errormap&geterrormap()
2933
34public:35
36static std::string geterrorstring(int
value)
3744
else
4548}49
};50
51
以下是用法:
#define err_system_init -23 //system initailized fail 改成 static error system_not_init(-23,"system initailized fail");
函式裡面返回錯誤碼,這樣返回:
int foo()
然後使用者想通過返回值得到更詳細的資訊時,可以這樣做:
cout << error::geterrorstring(err_code) << std::endl;
錯誤碼 使用 Go 定義錯誤碼
不管在什麼系統中,定義錯誤碼都是必不可少的.錯誤碼可以幫助定義問題,通常錯誤碼設計為某種模式結構,可以判斷出錯誤的級別,錯誤的模組和具體錯誤資訊.乙個良好結構的錯誤碼有助於簡化問題描述,當前設計的錯誤碼共有五位,結構如下 1 00 01 服務級別 模組 具體錯誤 第一位是服務級別,1 為系統錯誤,2...
錯誤碼總結
200 伺服器成功返回網頁 404 請求網頁不存在 1xx 臨時相應 表示臨時相應並需要請求者繼續執行操作 100 繼續 請求者應當繼續提出請求。伺服器返回此 表示已收到請求的第一部分,正在等待其餘部分 101 切換協議 請求者已要求伺服器切換協議,伺服器已確認並準備切換 2xx 成功 表示成功處理...
mysql624錯誤碼 mysql錯誤碼問題
1級2018 11 18 回答 這裡列出部分,詳情可參考 訊息 無法建立檔案 s errno d 錯誤 1005 sqlstate hy000 er cant create table 訊息 無法建立表 s errno d 錯誤 1006 sqlstate hy000 er cant create ...