2017-04-05 27 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语句,只有在有效/正常选项时才使用它们。