在 Controller 上捕获 Doctrine 异常

Catch Doctrine exception on Controller

我将 Symfony 4 与 Doctrine 一起使用,并且正在处理一个将被持久化的实体。

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

截至目前,我的代码如下所示

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

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

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

我希望能够决定在响应中发送什么以防出现错误。

您可以通过以下方式简单地捕获错误,但您必须检查条件。

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();
}