Symfony 4:捕获异常

时间:2019-04-29 12:40:48

标签: php symfony

我正在尝试捕获错误,但是它不起作用,我总是看到Symfony Exception页面,您在代码中看到任何错误吗? 预先感谢。

namespace App\Controller;
use App\Entity\Product;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\AcceptHeader;
use Doctrine\ORM\ORMException;
use Doctrine\DBAL\DBALException;


public function index() {
        $request = Request::createFromGlobals();
        $content = $request->getContent();        
        $prod = [];
        $response = null;
        try
        {
            //$product->setPrice($request -> request -> get('price'));
            ....            
        }                  
        catch(\DBALException $e){
            $errorMessage = $e->getMessage();
            $response = New Response();
            $response -> setContent($errorMessage);
            $response -> setStatusCode(Response::HTTP_BAD_REQUEST);
        }
        catch(Exception $e){
            $errorMessage = $e->getMessage();
            $response = New Response();
            $response -> setContent($errorMessage);
            $response -> setStatusCode(Response::HTTP_BAD_REQUEST);

        }

        $response->headers->set('Content-Type', 'application/json');
        return $response;             
}

这是错误 enter image description here 谢谢 安德里亚

1 个答案:

答案 0 :(得分:0)

尽管您没有显示引发异常的行,但是您似乎没有使用正确的名称空间:TheDoctrine DBALException被命名为名称空间,而\DBALException在Symfony 4中不存在。 / p>

您可能想要:

 catch (\Doctrine\DBAL\DBALException $e) {

或者只是:

catch (DBALException $e) {

如果您在课程顶部有use \Doctrine\DBAL\DBALException;语句。

编辑:您显示的错误不是例外,而是错误。您应该对此进行修复,以使其不会发生,但是如果您要捕获它,可以像捕获异常一样进行:

catch (\Error $e) {

或:

catch (\TypeError $e) {