PHP中的错误处理实践 - 如果函数没有返回应该怎么做

时间:2011-11-22 09:32:23

标签: php error-handling

我希望改进PHP程序中的错误处理和调试,并需要一些建议。让我们说我有这个功能(绝对没有用......只是做了它):

function foo($bar) {
   foreach($bar as $x):
      if($x == 'something') {
         return 'found something'
      }
   endforeach;
}

如果我告诉C该函数是为了返回某些东西,那么上面就不允许说C语句。这是因为$x可能永远不会等于'something'

这是改善我的功能的一步吗?

function foo($bar) {
   foreach($bar as $x):
      if($x == 'something') {
         return 'found something'
      }
   endforeach;
   throw new Exception('some exception');
}

它仍然不能确保函数返回..除非抛出新的异常返回,但我不这么认为。没有比这样做更好的方法或错误处理吗? :

function foo($bar) {
   foreach($bar as $x):
      if($x == 'something') {
         return 'found something'
      }
   endforeach;
   throw new Exception('some exception');
   return -1; 
}

然后检查函数是否在代码中的其他位置返回-1?

谢谢:)。

2 个答案:

答案 0 :(得分:2)

从函数中抛出异常不允许函数返回。即使它确实如此,你也不会有机会查看返回值,因为PHP会要求立即在catch块中处理异常。

如果$x永远不能等于'something',则需要返回-1,不要在函数内抛出任何异常。但是如果你要在调用代码返回-1 时抛出异常,你可能会忘记返回该值。直接抛出异常,并在调用代码的catch块中处理它。

有用的阅读:PHP manual on exception handling

答案 1 :(得分:0)

function Demo()
{
    try
    {
        // Your logic here
    }
    catch(Exception $e)
    {
        error_log($e->getMessege(),3,'error.log');
    }
}