2017-02-15 5 views
1

Ich versuche, eine Ausnahme zu fangen, während der Ausführung:

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

Ich habe auch versucht \Exception und \Doctrine\ORM\ORMException, aber keiner von ihnen arbeitete.

Statt Dumpingausnahmemeldung erhalte ich den gleichen Fehler, den ich fange Ausnahme zu vermeiden, versuchen:

[3/3] ForeignKeyConstraintViolationException: Eine Ausnahme aufgetreten, während '? DELETE FROM trainee_education WHERE id =' Ausführen mit params [2]:

SQLSTATE [23000]: Integrität Einschränkungsverletzung: 1451 kann nicht gelöscht oder Update eine übergeordnete Zeile: ein Fremdschlüssel nicht (trainingexperienceinternship, CONSTRAINT FK_10D1B00C2CA1BD71 FOREIGN KEY (education_id) LITERATUR. trainee_education)

Ich weiß, warum meine Einschränkung fehlschlägt, nichts Neues. Aber ich möchte eine Ausnahme bekommen, damit ich den Benutzer informieren kann, dass er ein Objekt nicht löschen kann, wenn er es zuvor benutzt hat, um eine Beziehung zu erstellen.

+0

Die Ausnahmen sagen, es ist Name "ForeignKeyConstraintViolationException" nicht "PDOException", sind Sie sicher, dass die erste die zweite erweitert? Sie sollten versuchen, "ForeignKeyConstraintViolationException" abzufangen und zu sehen. Oder um sicher zu sein, versuchen Sie, Exception zu fangen, dann können Sie herausfinden, welche Klasse als Ausnahme – smarber

+0

@smarber \ Exception auch nicht funktioniert, deshalb habe ich hier eine Frage gestellt. Danke für die Eingabe, ich werde es versuchen und werde Sie wissen lassen. –

Antwort

4

Ich habe die gleiche Situation, aber ich arbeite mit \ Lehre \ 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)); 

} 

Ich weiß nicht, ob die beste Lösung ist, aber funktioniert.

+0

Das hat perfekt funktioniert, danke! –