Symfony 4: ловить исключение - PullRequest
0 голосов
/ 29 апреля 2019

Я пытаюсь отловить ошибки, но это не работает, я всегда вижу страницу исключения Symfony, вы видите ошибки в моем коде?заранее спасибо.

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 голосов
/ 29 апреля 2019

Хотя вы не показываете строку, которая выдает исключение, похоже, вы не используете правильное пространство имен: Doctrine DBALException является пространством имен, а \DBALException не существует в Symfony 4.

Вы, вероятно, хотите:

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

или просто:

catch (DBALException $e) {

, если у вас есть оператор use \Doctrine\DBAL\DBALException; в верхней части вашего класса.

Изменить: Ошибка, которую вы показали, не исключение, а ошибка.Вы должны исправить это так, чтобы это не могло произойти, но если вы хотите поймать это, вы можете сделать это так же, как вы ловите исключения:

catch (\Error $e) {

или:

catch (\TypeError $e) {
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...