25

私は例外をスローしようとしていますが、次のことを行っています。

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が見つからないなどのエラーが発生します。

これは例外をスローするための最良の方法ですか?

4

3 に答える 3

51

試す:

use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;

throw new NotFoundHttpException("Page not found");

私はあなたがそれを少し逆にしたと思います:-)

于 2012-05-16T23:05:05.753 に答える
9

コントローラーにある場合は、次の方法で実行できます。

throw $this->createNotFoundException('Unable to find entity.');
于 2012-07-13T10:58:32.523 に答える
1

controllerでは、次のように簡単に実行できます。

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;。その理由は、コンストラクターを使用するように、クラスを直接使用していないためです。

controller の外側では、クラスが見つかる場所を示し、通常どおりに例外をスローする必要があります。このような:

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!");
于 2016-01-29T15:53:08.113 に答える