私は例外をスローしようとしていますが、次のことをしています:
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が見つからないなどのエラーが発生しています.
これは例外をスローする最良の方法ですか?
試してください:
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
そして
throw new NotFoundHttpException("Page not found");
私はあなたがそれを少し逆にしたと思う:-)
任意のコントローラーで、これを404 Symfony内のHTTP応答に使用できます
throw $this->createNotFoundException('Sorry not existing');
と同じ
throw new NotFoundHttpException('Sorry not existing!');
または、これは500 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をフローできます
コントローラー内にある場合は、次の方法で実行できます。
throw $this->createNotFoundException('Unable to find entity.');
コントローラで、あなたは単にすることができます:
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!");