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!");