orm - 在控制器上捕获 Doctrine 异常
问题描述
我正在将 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();
}
推荐阅读
- python - 尝试在 django 管理模型操作中使用 django celery 导出字段但没有得到响应
- sql - 蜂巢阵列
- android - 有没有办法访问 DJI Pilot android 应用程序的源代码?
- sql - Write-SqlTableData 中途出现 ConnectionToServerFailed 失败
- c++ - 如果在 C++ 中为 null,则回退值
- sql-server - 如何计算每组具有特定值的元组数?
- c# - 已向 commandmanager 注册命令,但未触发
- counting-sort - 两个代码有何不同?,当运行 code1 给出 TLE 错误但第二个不给出 . 基于 0(n) 的解决方案
- javascript - 如何用 webpack 和 babel 做 $( document ).ready() ?
- c# - 如何反序列化键名.Net中包含点(。)的Json字符串