在Controller上捕获Doctrine异常

时间:2018-05-28 11:53:48

标签: orm doctrine symfony4

我正在使用Symfony 4和Doctrine处理一个将被保留的实体。

我想知道在持久化时发生异常时如何进行try \ catch处理,以便我可以相应地发送不同的错误。

截至目前,我的代码看起来像这样

$user->setUsername($username)
    ->setEmail($email)
    ->setPassword($password);

    $em->persist($user);
    $em->flush();

return $this->json(['msg'=>'some message', 201);

我希望能够在出现错误的情况下决定在响应中发送什么。

1 个答案:

答案 0 :(得分:1)

您可以按照以下方式捕获错误,但您必须检查条件。

try {
    $user->setUsername($username)
    ->setEmail($email)
    ->setPassword($password);

    $em->persist($user);
    $em->flush();
} 
catch(DBALException $e){
    $errorMessage = $e->getMessage();
}    
catch(\Exception $e){
    $errorMessage = $e->getMessage();
}