我正在向我的 PHP 代码添加异常处理。似乎我最终得到了许多执行异常处理的稀疏块,并且它们的庞大体积隐藏了正在运行的实际生产代码。例如:
function loadProduct($id)
{
$product = new ProductRecord();
try
{
$data = $product->loadFromDatabase($id);
}
catch (\BadFunctionCallException $e)
{
$error = true;
}
return $data;
}
上述函数的实际有效载荷是返回 $data。如果没有异常处理,它可能是一个 2 行函数:
function loadProduct($id)
{
$product = new ProductRecord();
return $product->loadFromDatabase($id);
}
隐藏它的一种方法是使用Factory Method
,例如:
function loadProduct($id)
{
$product = new ProductRecord();
$factory = new ProductFactory($product);
return $factory->loadProduct($id); //inside loadProduct I can put try/catch block
}
在这里,我在我的函数中添加了一个全新的(工厂)类和另一行代码来隐藏我的异常处理。经过适当的照顾,我认为这将起作用并且看起来仍然不错(即我可以在构造函数中初始化我的工厂,从而将其移出函数级代码,因此它可能是一个不错的选择)。但那是最好的吗?
换句话说,我的问题是——如何在我的代码中使用异常处理而不将我的实际有效负载埋入 try/catch 块的稀疏性中?