我在 MVC 框架中编写了一些代码,如下所示:
class Controller_Test extends Controller
{
public function action_index()
{
$obj = new MyObject();
$errors = array();
try
{
$results = $obj->doSomething();
}
catch(MyObject_Exception $e)
{
$e->getErrors();
}
catch(Exception $e)
{
$errors[] = $e->getMessage();
}
}
我的朋友争辩说,Controller 应该对 MyObject 一无所知,因此我不应该捕获 MyObject_Exception。
他认为代码应该做这样的事情:
class Controller_Test extends Controller
{
public function action_index()
{
$obj = new MyObject();
$errors = array();
if($obj->doSomething())
{
$results = $obj->getResults();
}
else
{
$errors = $obj->getErrors();
}
}
我绝对理解他的方法,但感觉好像状态管理会导致意想不到的副作用。
什么是正确或首选的方法?
编辑:错误地将 $obj->getErrors() 放在 MyObject_Exception catch 子句中,而不是 $e->getErrors();