Исключение Catch Cakephp 3: не работает

Я пытаюсь поймать исключения в Cakephp v3.0, но, похоже, это не работает:

try{ $email = new Email('default'); $email->from([Configure::read('email') => Configure::read('emailName')]) ->to(Configure::read('email')) ->bcc($to) ->subject(__('XXXX') . ' : ' . __('XXXX')) ->template('fail', 'default') ->emailFormat('html') ->send(); } catch (Exception $ex) { } 

Это исключает исключение:

 Could not send email: mail(): Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() Cake\Network\Exception\SocketException 

Довольно раздражает, я использую его, чтобы поймать неудачную отправку электронной почты на локальном сервере.

Большое спасибо.

Добавляя ответ здесь, просто чтобы довести оставшиеся вопросы без ответа:

Вам нужно использовать \Exception или более конкретное имя с именами, имена исключений

 try { // code } catch (\Exception $e) { // error } 

У меня была аналогичная проблема, когда я попытался поймать MissingConnectionException .

В моем случае следующие строки решили мою проблему.

 use Cake\Core\Exception\Exception; ... try { // Your test code here } catch (Exception $e) { ... } 

Надеюсь, это поможет вам.

Вы можете попробовать использовать try catch

 try { $email = new Email('default'); $email->from([Configure::read('email') => Configure::read('emailName')]) ->to(Configure::read('email')) ->bcc($to) ->subject(__('XXXX') . ' : ' . __('XXXX')) ->template('fail', 'default') ->emailFormat('html') ->send(); } catch (\PDOException $e) { $error = $e->getMessage(); }