CakeEmail как определить неудачу перед трассировкой стека?

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

Я думал, что следующее должно работать так же, как при использовании save()

  if ( $email->send() ) { //..success - works.. } else { //..fail - never gets here, stack trace } 

http://i.imgur.com/xY8rq.png

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

и вы ловите там, только не исключение бросили 🙂

попробуй это:

 try { $success = $email->send(); ... } catch (SocketException $e) { // Exception would be too generic, so use SocketException here $errorMessage = $e->getMessage(); ... } 

таким образом вы можете поймать исключение и сделать здесь.