dpqg86714 2011-05-15 12:55
浏览 35

使用服务层时如何处理错误?

in my Zend Framework project, I use a Service Layer, however I don't really know where to handle errors.

For example, let's say I've a UserService::updateUser($data);

What if I've:

$data = array(
   'userId' => 2,
   'firstName' => 'Jane',
   'lastName'  => 'Doe',
);

And user with id 2 doesn't exist?

Where and how would you handle such errors?

  • 写回答

1条回答 默认 最新

  • dongqieli4164 2011-05-15 23:29
    关注

    You can forward to a specific controller to handle all your business errors, like this :

    if ($error=true)
            return $this->_forward('standarderror', 'businesserror', 'default',
                    array('msgtitle' => $this->view->translate('item_not_found'),
                        'msg' => $this->view->translate('item_not_found_msg')));
    

    and where your BusinesserrorController looks like :

    class BusinesserrorController extends Zend_Controller_Action {
    
    public function init() {
        $this->_helper->viewRenderer->setNoRender();
    }
    
    public function standarderrorAction() {
        $msgtitle = $this->_getParam('msgtitle');
        $msg = $this->_getParam('msg');
    
        $this->view->errortitle = $msgtitle;
        $this->view->errormessage = $msg;
    
        $this->view->nextstep = $this->view->translate('return_to_the_homepage');
        $this->view->nextstepurl = "/";
    
        echo $this->render('error/businesserror', null, true);
    }
    
    }
    

    you can parametrize the forwarded url as well ;)

    评论

报告相同问题?

悬赏问题

  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么