Я пытаюсь поймать исключения в 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(); }