天天看點

關于錯誤資訊的讨論

為啥一定要處理各種錯誤事件呢?

每個函數,傳回錯誤,一定和輸入的條件相關,特定的條件,導緻特定的錯誤。

一個使用者,在使用某個函數的時候,一定是基于一定的目的,是以,輸入的條件應該是有限集,是以,傳回的錯誤,應該是有限集。

一般說來,設計函數應該遵循“懶漢”原則,就是能自己處理的問題,盡量自己内部處理,傳回的錯誤資訊越少越好,免得對應用者産生誤導。

我做函數,一般先寫成void,實在有必要了,調用者需要查詢執行結果,改成bool,再實在不行了,調用者要區分幾種狀态,才改成int。

到目前為止,我寫了十幾年,傳回資訊最多的就是三态,就是最多三種可能的結果。是以我的函數調用都很簡單。

至于錯誤,其實很少傳回給上層的,基本上都是内部處理。

比如一個隊列的addlast函數,原則上傳回操作的位元組數,表示成功,如果失敗,記憶體申請失敗什麼的,傳回0好了,就這兩類結果。

調用者也好判斷,至于添加失敗了應該做什麼,這本來就不是底層函數關心的事情,由調用者負責好了。對于調用者來說,也根本就不關心底層出現了哪些錯誤,知道本次操作失敗就好了,自然有解決之道。

是以,函數構型的設計,應該遵循盡量簡單的原則。千萬不要很負責任地一下傳回十幾種錯誤,那函數基本上就不可用了。因為沒有人有耐心,每調用一個函數,都要處理幾十種錯誤的傳回可能。

繼續閱讀