# Exception Handling

**URL:** <https://forum.shopware.com/t/exception-handling/48511>\
**Category:** Programmierung\
**Created:** [27. September 2017 um 11:30 UTC](https://forum.shopware.com/t/exception-handling/48511 "2017-09-27T11:30:11Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![oerkel](https://avatars.discourse-cdn.com/v4/letter/o/a9adbd/32.png) [@oerkel](https://forum.shopware.com/u/oerkel)\
**Post date:** [27. September 2017 um 11:30 UTC](https://forum.shopware.com/t/exception-handling/48511/1 "2017-09-27T11:30:11Z")

</div>

Hallo,  
ich habe einen Controller erstellt über den ich auf das Customerobjekt zugreife. Beim Zugriff&nbsp; über $customer-\>getEmail() bekomme ich nun eine Doctrine\ORM\EntityNotFoundException geworfen da dieses Feld nicht gefüllt ist. Der Controller verabschiedet sich mit einem 503 Error.

Die Exception habe ich nun versucht über try catch abzufangen jedoch ohne Erfolg. Weiterhin 503 und Scriptabbruch.

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $email = $customer-\>getEmail();  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (Doctrine\ORM\EntityNotFoundException $e) {  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $email = ‚‘;  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }

Was mache ich falsch? An welchen schrauben kann / muss ich noch drehen um eine Exception abzufangen?

---

<div class="post-metadata">

**Author:** ![arnebecker](https://avatars.discourse-cdn.com/v4/letter/a/3bc359/32.png) [@arnebecker](https://forum.shopware.com/u/arnebecker)\
**Post date:** [28. September 2017 um 12:06 UTC](https://forum.shopware.com/t/exception-handling/48511/2 "2017-09-28T12:06:02Z")

</div>

Versuch es mal mit catch ( \*_\*_ Doctrine\ORM\EntityNotFoundException $e). Also ein \ vor Doctrine. Du musst hier den FQCN nutzen. Sonst sucht er innerhalb deines Namenspaces nach der Exception Klasse.

Es ist aber sehr merkwüdig, dass er an der Stelle diese Exception wirft. Auch wenn getMail leer ist oder $customer nicht existiert, müsste er da was anderes werfen.&nbsp;

---

<div class="post-metadata">

**Author:** ![oerkel](https://avatars.discourse-cdn.com/v4/letter/o/a9adbd/32.png) [@oerkel](https://forum.shopware.com/u/oerkel)\
**Post date:** [28. September 2017 um 12:52 UTC](https://forum.shopware.com/t/exception-handling/48511/3 "2017-09-28T12:52:27Z")

</div>

Danke für die Anwort. Das hatte ich auch schon erfolglos getestet.

Den $customer ziehe ich mir über das Orderobjekt.

Das Objekt ist auch gefüllt,&nbsp; $customer-\>getId() gibt einen Rückwert,&nbsp; $customer-\>getEmail();&nbsp; schmeißt unten stehende Meldung

> Entity of type ‚Shopware\Models\Customer\Customer‘ for IDs id(37) was not found in vendor/doctrine/orm/lib/Doctrine/ORM/EntityNotFoundException.php

&nbsp;

---

<div class="post-metadata">

**Author:** ![arnebecker](https://avatars.discourse-cdn.com/v4/letter/a/3bc359/32.png) [@arnebecker](https://forum.shopware.com/u/arnebecker)\
**Post date:** [28. September 2017 um 14:45 UTC](https://forum.shopware.com/t/exception-handling/48511/4 "2017-09-28T14:45:56Z")

</div>

Das kommt mir sehr sehr merkwüdig vor. getEmail wirft nämlich gar keine Exception. Der Fehler sagt auch eher aus, dass du keinen Customer mit der ID 37 in deiner Datenbank hast. Dein $customer müsste demnach auch leer oder null sein. Ich denke eher, dass es schon einen Fehler beim Abrufen des Kunden auf dem Order Objekt gibt.

---

<div class="post-metadata">

**Author:** ![EikeBrandtWarneke](https://avatars.discourse-cdn.com/v4/letter/e/cdc98d/32.png) [@EikeBrandtWarneke](https://forum.shopware.com/u/EikeBrandtWarneke)\
**Post date:** [30. September 2017 um 15:13 UTC](https://forum.shopware.com/t/exception-handling/48511/5 "2017-09-30T15:13:30Z")

</div>

Wahrscheinlich liest du den customer mit lazy loading so dass der fehlende Kunde erst zum Problem wird, wenn du aktiv Daten liest. Zeig mal bitte wie du an $customer kommst.

Viele Grüße&nbsp;

---

<div class="post-metadata">

**Author:** ![oerkel](https://avatars.discourse-cdn.com/v4/letter/o/a9adbd/32.png) [@oerkel](https://forum.shopware.com/u/oerkel)\
**Post date:** [2. Oktober 2017 um 06:13 UTC](https://forum.shopware.com/t/exception-handling/48511/6 "2017-10-02T06:13:08Z")

</div>

Im Endeffekt nur diese 3 Zeilen:

$order = Shopware()-\>Models()-\>getRepository(‘Shopware\Models\Order\Order’)-\>find($id);

… weiterer Quellcode mit Abruf von Orderdaten …

$customer = $order-\>getCustomer();  
$customer-\>getEmail();

---

<div class="post-metadata">

**Author:** ![arnebecker](https://avatars.discourse-cdn.com/v4/letter/a/3bc359/32.png) [@arnebecker](https://forum.shopware.com/u/arnebecker)\
**Post date:** [2. Oktober 2017 um 07:43 UTC](https://forum.shopware.com/t/exception-handling/48511/7 "2017-10-02T07:43:08Z")

</div>

Sieht problemlos aus. Hats du denn einen Kunden mit ID 37 in der Datenbank?

---

<div class="post-metadata">

**Author:** ![oerkel](https://avatars.discourse-cdn.com/v4/letter/o/a9adbd/32.png) [@oerkel](https://forum.shopware.com/u/oerkel)\
**Post date:** [2. Oktober 2017 um 08:03 UTC](https://forum.shopware.com/t/exception-handling/48511/8 "2017-10-02T08:03:30Z")

</div>

das ist es…  
keine Ahnung wie ich das hinbekommen habe. Über die Bestellung ermittel ich die ID 37, der Customer in der DB hat die ID 38.

Danke fürs denken 😉

---

<div class="post-metadata">

**Author:** ![arnebecker](https://avatars.discourse-cdn.com/v4/letter/a/3bc359/32.png) [@arnebecker](https://forum.shopware.com/u/arnebecker)\
**Post date:** [2. Oktober 2017 um 08:11 UTC](https://forum.shopware.com/t/exception-handling/48511/9 "2017-10-02T08:11:04Z")

</div>

![Grin](https://forum.shopware.com/plugins/CKEditor/plugins/smiley/images/grin.png "Grin")
