拥有更高效的代码来返回错误

时间:2013-05-03 20:53:10

标签: php performance error-handling coding-style server-side

我创建了一个主类,其中所有主要成员激活停用功能都已完成,所有与其相关的其他内容也已完成

这个主要类(以及一些主要功能)从各个地方调用,包括通过curl

现在让我们在课程

中学习我的激活功能(其中一个主要功能)
activationFunction($data)
{
//use data to generate total, discount etc

$this->giveAffiliates($total);
if($this->_error){ return $this->_error;}

$this->activateOrder($total,$discount,id);
if($this->_error){ return $this->_error;}

$this->activatePlan($total,$discount,id);
if($this->_error){ return $this->_error;}

//similarily calling various functions which themselves call other functions

}

activatePlan()
{

try{

//call other functions and do necessary stuff for plan A

 }
catch(Exception $e)
{

$this->_error.="Error occurred while activating plan A";

}
//for plan B
try{

//call other functions and do necessary stuff for plan B

}
catch(Exception $e)
{

$this->_error.="Error occurred while activating plan B";

}

//for other plans similarily

 }
 }

现在问题是每个子函数调用后都有if($this->_error){ return $this->_error;}。(总计我有大约35个类似的行) 我需要这个,因为我需要将错误发送给用户并阻止我的代码进一步运行。 但它使我的代码变长而且效率不高。 如何减少所有这些返回但在其中一个子函数失败时向用户显示错误并尝试保持我的代码结构不变。 我必须从每个main函数中调用各种子函数(我不能更改,其中只有一个类和各种函数),并且大多数必须在每个级别捕获并返回错误(很少有简单的错误不是返回并允许代码继续运行)。 我还要记住,以后可以添加各种其他功能,它应该足够灵活,以便稍后处理所有这些功能

2 个答案:

答案 0 :(得分:2)

你说“它使我的代码变长而且效率不高。”究竟是什么意思“效率不高”?你是说你的代码很慢吗?

如果您的代码太慢,则需要使用XDebug等工具对代码进行分析,以确切了解代码的速度。如果你不衡量,你只是猜测问题是什么。

答案 1 :(得分:0)

我认为每个函数都应该处理自己的错误/异常。因此,您不会将所有错误处理推送到调用该函数的每个苍白。该函数的调用者不需要包含有关如何从被调用函数生成错误通知的逻辑。

所以说你有每个函数在错误条件下抛出异常。然后你可以做这样的事情:

activationFunction($data)
{
  //use data to generate total, discount etc
  try {
    $this->giveAffiliates($total);
    $this->activateOrder($total,$discount,id);
    $this->activatePlan($total,$discount,id);
  } catch (Exception $e) {
    // throw the exception up the call chain
    throw $e;
  }
}