考慮下面這個簡單的函數聲明:返回的值 - 錯誤指示值
vector<Date> getMonthArray(int month, int year);
至於C++ 11,我可以利用移動語義的和值,而不損失任何性能的返回日期矢量和避免使用'新'和'刪除'。
問題是,如果功能失敗,則不知道該返回什麼。 E.G.一個月或一年都低於零
我都不能返回null,因爲我可以用指針做, 所以我想到了兩種可能性:
1)返回一個空數組 2)拋出一個異常
說實話,我討厭這兩個。很想聽聽更有經驗的C++程序員的更好的解決方案。
編輯:
所以,拋出一個異常,真的看起來像最優雅的解決方案,因爲它不涉及用戶的需要,爲了正常運行的功能(可拋出的異常,除了閱讀任何文件)。我對麼?或者其他更多的選擇?
在此處拋出異常是要走的路。 – rightfold
@rightfold:護理闡述?在這種情況下,你怎麼可能知道什麼是OP的「正確」解決方案?異常處理可以是一個棘手的野獸,然後有各種各樣的關於在哪裏檢查異常,這也正是他們應該處理的問題。也許對於有機磷農藥代碼的最好的事情就是打電話getMonthArray之前驗證輸入,因爲他們可以,然後有依賴於該驗證的輸入等功能。我的觀點是,不知道OP的代碼庫,稱「使用例外」需要配備大量的鹽。 – AndyG