2017-02-15 25 views
1

我想在执行捕捉异常:

try { 
    $em->remove($education); 
    $em->flush(); 
} catch(PDOException $e) { 
    var_dump($e->getMessage()); 
    die; 
} 

我也试过\Exception\Doctrine\ORM\ORMException,但没有一次成功。

相反倾销异常消息我得到我试图避免受凉异常同样的错误:

[3/3] ForeignKeyConstraintViolationException:执行发生异常 '?DELETE FROM trainee_education WHERE ID ='与 PARAMS [2]:

SQLSTATE [23000]:完整性约束违规:1451不能删除或 更新父行,外键约束失败 (trainingexperienceinternship,约束FK_10D1B00C2CA1BD71 外键(education_id)引用。 trainee_educationid))

我知道为什么我的约束失败,没有新的东西。但我想要得到一个异常,所以我可以通知用户他不能删除一个对象,他之前用它来创建关系。

+0

异常说它的名字是'ForeignKeyConstraintViolationException'而不是'PDOException',你确定第一个扩展了第二个吗?你应该尝试捕获'ForeignKeyConstraintViolationException'并参阅。或者确保尝试捕获异常,那么你可以找出抛出哪个类作为异常 – smarber

+0

@smarber \ Exception也不起作用,这就是为什么我在这里问了一个问题。谢谢你的意见,我会尝试,并会让你知道。 –

回答

4

我有同样的情况,但我\主义\ DBAL \ DBALException

try{ 

     $em->persist($question); 
     $em->flush(); 
} catch (\Doctrine\DBAL\DBALException $e) { 

     $exception_message = $e->getPrevious()->getCode(); 
    return $this->render('AppBundle:Errors:error.html.twig', array('error' => $exception_message)); 

} 

我不知道,如果是最好的解决办法,但工程工作。

+0

这工作完美,谢谢! –