Orm 捕获控制器上的异常
我正在使用Symfony 4和条令,并且正在处理一个将被持久化的实体 我想知道如何在持久化过程中发生异常时进行一种try\catch处理,以便相应地发送不同的错误 到目前为止,我的代码如下所示Orm 捕获控制器上的异常,orm,doctrine,symfony4,Orm,Doctrine,Symfony4,我正在使用Symfony 4和条令,并且正在处理一个将被持久化的实体 我想知道如何在持久化过程中发生异常时进行一种try\catch处理,以便相应地发送不同的错误 到目前为止,我的代码如下所示 $user->setUsername($username) ->setEmail($email) ->setPassword($password); $em->persist($user); $em->flush(); return $th
$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();
}
您可以简单地如下捕获错误,但必须检查条件
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();
}
你所说的检查条件是什么意思?另外,DBALException是由条令引发的任何异常吗?您需要检查异常以自定义错误消息,我刚才谈到了这一点。条令返回带有DBALException的异常,如果不在此处返回异常,则需要使用常规异常。条令\DBAL\DBALException和条令\DBAL\Driver\DriverException已分别重命名为条令\DBAL\exception和条令\DBAL\Driver\exception。你所说的检查条件是什么意思?另外,DBALException是由条令引发的任何异常吗?您需要检查异常以自定义错误消息,我刚才谈到了这一点。条令返回带有DBALException的异常,如果不在此处返回异常,则需要使用常规异常。条令\DBAL\DBALException和条令\DBAL\Driver\DriverException已分别重命名为条令\DBAL\exception和条令\DBAL\Driver\exception。