J'essaie de lancer des exceptions et je fais ce qui suit:
use Symfony\Component\HttpKernel\Exception\HttpNotFoundException;
use Symfony\Component\Security\Core\Exception\AccessDeniedException;
Je les utilise ensuite de la manière suivante:
throw new HttpNotFoundException("Page not found");
throw $this->createNotFoundException('The product does not exist');
cependant, je reçois des erreurs comme HttpNotFoundException introuvable, etc.
Est-ce la meilleure façon de lancer des exceptions?
Essayer:
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
et
throw new NotFoundHttpException("Page not found");
Je pense que vous avez un peu en arrière :-)
dans n'importe quel contrôleur, vous pouvez utiliser ceci pour la réponse 404 HTTP dans Symfony
throw $this->createNotFoundException('Sorry not existing');
pareil que
throw new NotFoundHttpException('Sorry not existing!');
ou ceci pour 500 code de réponse HTTP
throw $this->createException('Something went wrong');
pareil que
throw new \Exception('Something went wrong!');
ou
//in your controller
$response = new Response();
$response->setStatusCode(500);
return $response;
ou c'est pour tout type d'erreur
throw new Symfony\Component\HttpKernel\Exception\HttpException(500, "Some description");
Aussi ... Pour Custom Exceptionvous pouvez indiquer cette URL
Si c'est dans un contrôleur, vous pouvez le faire de cette façon:
throw $this->createNotFoundException('Unable to find entity.');
Dans le contrôleur , vous pouvez simplement faire:
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');
// ...
}
Dans cette situation, il n'est pas nécessaire d'inclure le use Symfony\Component\HttpKernel\Exception\HttpNotFoundException;
en haut. La raison en est que vous n'utilisez pas directement la classe, comme si vous utilisiez le constructeur.
En dehors du contrôleur , vous devez indiquer où la classe peut être trouvée et lever une exception comme vous le feriez normalement. Comme ça:
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
// ...
// Something is missing
throw new HttpNotFoundException('The product does not exist');
ou
use Symfony\Component\Security\Core\Exception\AccessDeniedException;
// ...
// Permissions were denied
throw new AccessDeniedException("You don't have access to this page!");