Zend Framework 2 – Exception fangen

25. November 2014

Klingt trivial, ist es auch, aber man muss es halt doch mal wissen. Zend Framework baut sich sein ganz eigenes Errorhandling und als ich versuchte, eine Exception mit try und catch(Exception $e) aufzufangen, bewirkte das genau gar nichts. Warum? Man muss catch(\Exception $e) schreiben. Konkret versuchte ich mich an einer IMAP Verbindung zu einem Mailserver:

  1. $mail = new \Zend\Mail\Storage\Imap(array(
  2.     'host'     => 'imap.gmail.com',
  3.     'user'     => 'USERNAME@gmail.com',
  4.     'password' => 'PASSWORD',
  5.     'ssl'      => 'SSL',
  6.     'port'     => 993
  7. ));

Wenn die Logindaten nicht stimmen, dann wirft das einen Fehler. Um diesen zu fangen und im Falle falscher Logindaten zu reagieren, fange ich das ganze so auf:

  1. try{
  2.     $mail = new \Zend\Mail\Storage\Imap(array(
  3.         'host'     => 'imap.gmail.com',
  4.         'user'     => 'USERNAME@gmail.com',
  5.         'password' => 'PASSWORD',
  6.         'ssl'      => 'SSL',
  7.         'port'     => 993
  8.     ));
  9. }catch(\Exception $e){
  10.     die("wrong credentials!");
  11. }

Und mit \Exception klappts dann auch im Zend Framework.