Ver índice de contenidos del libro

5.6. Gestionando errores y páginas 404

Cuando no se encuentra un recurso, el protocolo HTTP indica que debes devolver un error con código de estado 404. Para ello, debes lanzar en tu código una excepción especial. Si estás extendiendo la clase base del controlador, haz lo siguiente:

public function indexAction()
{
    $product = // recupera el objeto desde la base de datos
 
    if (!$product) {
        throw $this->createNotFoundException('El producto solicitado no existe.');
    }
 
    return $this->render(...);
}

El método createNotFoundException() crea un objeto especial de tipo NotFoundHttpException, que a su vez genera una respuesta de tipo 404 en el interior de Symfony.

Obviamente puedes lanzar cualquier tipo de excepción en tu controlador. Symfony2 convierte automáticamente las excepciones en respuestas HTTP con código de error 500.

throw new \Exception('Algo no ha salido bien.');

En ambos casos, el usuario final ve una página de error normal y a los desarrolladores se les muestra una página de error con mucha información de debug o depuración (siempre que utilices el entorno de ejecución de desarrollo).