2017-04-05 51 views
1

背景:如何檢查不應該返回false的函數?

裏面大控制器我會被稱爲許多不同的功能,創建一個用戶,更新它們的順序,在事件時間表。這些操作中的每一個通過在模型層的功能處理...這裏是其中的功能之一的例子:

$user_id = 1; 
$data = array('name' => 'Billy'); 

if (updateUser($user_id, $data) === false) { 
    // handle error? 
} 

// continue with rest of controller 

問題:

我終於長出了現實檢查今天實現我沒有這樣的編碼的好理由......

如果updateUser()返回false,那麼我的數據庫抽象層出現嚴重問題,導致我無法更新數據庫中的數據。這絕不應該發生,因此沒有任何實際的錯誤來顯示我的用戶(這將允許他們採取適當的行動)。

基本上我的應用程序在此基礎上被打破了。

問:

我應該懶得檢查應該從未返回false的功能呢?如果是這樣如何?或者我應該像沒有任何檢查一樣給他們打電話?

updateUser($foo) 
createBooking($bar) 
scheduleEvent($qux) 
+2

_「這絕不應該發生」_ - 當然,但它仍然可以發生(數據庫服務器關閉,連接暫時因某種奇怪的原因而斷開連接等)。如果發生這種情況,您是不是想向用戶顯示出現問題並要求他們再試一次?永遠不要認爲你的代碼/服務器/系統不會有錯誤/問題。 jeroen的答案在下面是正確的處理方式。 –

+0

這很有道理!我應該看看一個錯誤日誌包。 –

+2

...並使用異常(這正是他們所說的,正常流程中的異常)。 –

回答

5

當一個函數內部發生什麼事情不應該發生時,拋出一個exception

然後你可以處理(捕獲)你想要做的所有異常。例如,向用戶顯示友好的消息並記錄所有的細節,以便您知道哪裏出了問題以及在哪裏。

然後,您可以擺脫if語句,只有在有效/正常選項時才使用它們。