Symfony2 и ошибка исключения исключения - программирование

Symfony2 и ошибка исключения исключения

Я пытаюсь сделать исключения, и я делаю следующее:

use Symfony\Component\HttpKernel\Exception\HttpNotFoundException;
use Symfony\Component\Security\Core\Exception\AccessDeniedException;

Я использую их следующим образом:

 throw new HttpNotFoundException("Page not found");
   throw $this->createNotFoundException('The product does not exist');

однако я получаю ошибки, такие как HttpNotFoundException не найдено и т.д.

Это лучший способ бросить исключения?

4b9b3361

Ответ 1

Try:

use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;

и

throw new NotFoundHttpException("Page not found");

Я думаю, что вы получили это немного назад: -)

Ответ 2

в любом контроллере вы можете использовать это для ответа 404 HTTP внутри Symfony

throw $this->createNotFoundException('Sorry not existing');

то же, что и

throw new NotFoundHttpException('Sorry not existing!');

или это для HTTP-кода ответа HTTP

throw $this->createException('Something went wrong');

то же, что и

throw new \Exception('Something went wrong!');

или

//in your controller
$response = new Response();
$response->setStatusCode(500);
return $response;

или это для любого типа ошибок

throw new Symfony\Component\HttpKernel\Exception\HttpException(500, "Some description");

Также... Для Пользовательского исключения вы можете передать этот URL

Ответ 3

Если это в контроллере, вы можете сделать это следующим образом:

throw $this->createNotFoundException('Unable to find entity.');

Ответ 4

В контроллере вы можете просто:

public function someAction()
{
    // ...

    // Tested, and the user does not have permissions
    throw $this->createAccessDeniedException("You don't have access to this page!");

    // or tested and didn't found the product
    throw $this->createNotFoundException('The product does not exist');

    // ...
}

В этой ситуации нет необходимости включать use Symfony\Component\HttpKernel\Exception\HttpNotFoundException; вверху. Причина в том, что вы не используете этот класс напрямую, например, используя конструктор.

Вне контроллера вы должны указать, где можно найти класс, и выбросить исключение, как обычно. Вот так:

use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;

// ...

// Something is missing
throw new HttpNotFoundException('The product does not exist');

или

use Symfony\Component\Security\Core\Exception\AccessDeniedException;

// ...

// Permissions were denied
throw new AccessDeniedException("You don't have access to this page!");