如何在symfony2框架中处理实体内的异常

时间:2016-06-15 07:11:38

标签: symfony exception doctrine-orm try-catch entity

我想从实体类中获取一些数据。我尝试使用try / catch来处理问题,但它无法正常工作(仍然给我提供了Exception屏幕)。

  

错误:在非对象中调用成员函数getGroup()   /var/www/html/system/src/Project/SomeBundle/Entity/MyEntity.php line   139   500内部服务器错误 - FatalErrorException堆栈跟踪

我如何在实体中做类似的事情?

代码/实体:

import urllib2
url = 'https://api.fitbit.com/1/user/-/activities/heart/date/2016-6-14/1d/1sec/time/00:00/23:59.json'
hdr = {'Authorization': 'Bearer (token)'}
req = urllib2.Request(url,headers=hdr)
f = urllib2.urlopen(req)

提前致谢...

2 个答案:

答案 0 :(得分:0)

错误消息Error: Call to a member function getGroup() on a non-object in...与您正在接收 无关。这意味着你试图在一个不是一个对象的东西上调用一个函数。

似乎$this->getItems()->last()以某种方式返回null(因为没有项目),然后您在getGroup()上调用null这是一个非对象。

尝试调试您正在调用getGroup()的对象,并在调用之前查看它所拥有的值。

答案 1 :(得分:0)

如果你想捕捉到这个错误,你必须按照以下方式编写try catch

    try {
        $result = $this->getName() . ' - ' . $this->getItems()->last()->getGroup()->getCode();
    }
    catch(\Symfony\Component\Debug\Exception\FatalErrorException $exception) {
        $result = $this->getName();

        $logFile = fopen('/tmp/error.log', 'a');
        fwrite($logFile, $exception->getMessage());
        fclose($logFile);
    }

您可以在上面的代码块中看到我已将 \ Exception 更改为 \ Symfony \ Component \ Debug \ Exception \ FatalErrorException