一種比異常終止更靈活的辦法是,使用函式的返回值來指出問題。
例如,ostream類的get(void)成員通常返回下乙個輸入字元的ascii碼,但到達檔案尾時,將返回eof。
對hmean()來說,這種方法不管用。任何數值都是有效的返回值,因此不存在可以指出問題的特殊值。
在這種情況下,可以使用指標引數或引用引數來將值返回給呼叫程式,並使用函式的返回值來指出成功還是失敗。
iostream族過載》運算子使用了這個技術的變體。通過告知呼叫程式是成功了還是失敗了,使得程式可以採取除異常終止程式之外的其他措施。
下列程式就是採用這種方法,它將hmean()的返回值重新定義為bool,讓返回值指出成功了,還是失敗了。另外還給該函式增加了第三個引數,用於提供答案。
1--returning an error code
2 #include3 #include//
(or float.h) for dbl_max45
bool hmean(double a, double b, double *ans);67
intmain()
8
20 std::cout<<"
bye!\n";
21return0;
22 }
1bool mean(double a, double b, double *ans)28
9else
1014 }
這個程式設計避免了錯誤輸入導致的惡果,讓使用者能夠繼續輸入。
當然,設計確實依靠使用者檢查函式的返回值。這項工作不是程式設計師經常做的。
第三個引數可以是指標或引用。很多程式設計師都傾向於使用指標,因為這樣可以明顯看出是哪個引數用於提供答案。
另外一種在某個地方儲存返回條件的方法是使用乙個全域性變數。
可能出現問題的函式可以在出現問題時將該全域性變數設定為特定的值,而呼叫程式可以檢查該變數。
http返回錯誤碼
http響應碼響應碼由三位十進位制數字組成,它們出現在由http伺服器傳送的響應的第一行。響應碼分五種型別,由它們的第一位數字表示 1xx 資訊,請求收到,繼續處理 2xx 成功,行為被成功地接受 理解和採納 3xx 重定向,為了完成請求,必須進一步執行的動作 4xx 客戶端錯誤,請求包含語法錯誤或...
錯誤碼 使用 Go 定義錯誤碼
不管在什麼系統中,定義錯誤碼都是必不可少的.錯誤碼可以幫助定義問題,通常錯誤碼設計為某種模式結構,可以判斷出錯誤的級別,錯誤的模組和具體錯誤資訊.乙個良好結構的錯誤碼有助於簡化問題描述,當前設計的錯誤碼共有五位,結構如下 1 00 01 服務級別 模組 具體錯誤 第一位是服務級別,1 為系統錯誤,2...
後台返回錯誤碼並且接收錯誤碼以及資料的方式
之前和小夥伴們一起寫專案的時候,後台的兄弟們介面的返回一班是乙個物件,或者乙個陣列。比如說檢測是否登入,小夥伴們的介面會返回狀態碼為200,返回值為乙個物件,其中有有關登入狀態,已登入或者未登入,也就是說只要介面能夠被訪問,那麼返回的狀態碼一定是200的。這次在github上拉了乙個網易雲 的後台 ...