php exception symfony

php - Symfony2 y lanzando error de excepción.



exception (4)

Estoy tratando de lanzar excepciones y estoy haciendo lo siguiente:

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

Entonces los estoy usando de la siguiente manera:

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

Sin embargo, estoy recibiendo errores como no se encuentra HttpNotFoundException, etc.

¿Es esta la mejor manera de lanzar excepciones?


Si está en un controlador, puedes hacerlo de esta manera:

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


Tratar:

use Symfony/Component/HttpKernel/Exception/NotFoundHttpException;

y

throw new NotFoundHttpException("Page not found");

Creo que lo tienes un poco al revés :-)


en cualquier controlador puedes usar esto para la respuesta HTTP 404 dentro de Symfony

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

igual que

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

o esto para 500 código de respuesta HTTP

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

igual que

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

o

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

O esto es para cualquier tipo de errores.

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

También ... Para la Excepción personalizada , puede fluir esta URL


En el controlador , simplemente puede hacer:

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''); // ... }

En esta situación, no es necesario incluir el use Symfony/Component/HttpKernel/Exception/HttpNotFoundException; en la cima. La razón de esto es que no estás usando la clase directamente, como usar el constructor.

Fuera del controlador , debe indicar dónde se puede encontrar la clase y lanzar una excepción como lo haría normalmente. Me gusta esto:

use Symfony/Component/HttpKernel/Exception/NotFoundHttpException; // ... // Something is missing throw new HttpNotFoundException(''The product does not exist'');

o

use Symfony/Component/Security/Core/Exception/AccessDeniedException; // ... // Permissions were denied throw new AccessDeniedException("You don''t have access to this page!");