sleeves sleeves - 4 months ago 29
PHP Question

Symfony2 Controller won't catch exception

This is the route handler for my delete action. It works well as long as the item does not have any associations.

public function projectDeleteAction()
{
try {
$request = $this->get('request');
$my_id = $request->query->get('id');

$em = $this->get('doctrine.orm.entity_manager');

$item = $em->find('MyBundle:Main', $my_id);

$em->remove($item);
$em->flush();

$info = $item->getName();
$result = 0;
}
catch (Exception $e) {
$info = toString($e);
$result = -1;
}

return $this->render('MyBundle:Main:response.xml.twig',
array('info' => $info, 'result' => $result ));
}


I have already solved the error of trying to delete an item with associations, but through this process, the "flush" was throwing PDOException. I tried various ways to catch it, but it appears to be getting caught inside Symfony2 and then it responds with a HTTP 500 error. Is there a way that I can have Symfony2 not catch this so that I can handle it? This is an XML response using AJAX and so I would rather just send an error code per above.

Answer

Try to change Exception\Exception if you didn't specified PDOException as Exception in a use statement. PHP tries to find \YourNamespaceWithController\Exception instead of \Exception.

Comments