我试图在实体持久性期间捕获Symfony2.3应用程序中Controller内部的异常。
try {
$em->persist($firm);
} catch(\Exception $e){
.........
}
我预计所有错误都将由我在 catch 语句中的代码处理,而不是我遇到以下错误:
[2/2] DBALException: An exception occurred while executing 'INSERT INTO ...
...
[1/2] PDOException: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry
...
CRITICAL - Uncaught PHP Exception Doctrine\DBAL\DBALException
如果我在 try 语句中抛出异常,则可以通过 catch
中的代码正确处理try {
throw new \Doctrine\ORM\ORMException;
//or throw new \Doctrine\DBAL\DBALException;
//or throw new \PDOException;
} catch(\Exception $e){
.......
}
我的问题是:如何正确处理Symfony2控制器内的Doctrine2。 感谢。
答案 0 :(得分:3)
Integrity constraint violation: 1062 Duplicate entry
在您的情况下,您应该检查之前的唯一性使用UniqueEntity validator来保存您的实体。
如果表单未验证 - 请不要坚持以避免此异常。
答案 1 :(得分:3)
可能你从第$em->flush()
行得到了异常,它没有用try-catch语句包装。