Cakephp 3无法捕获FatalErrorException

时间:2015-10-30 17:59:01

标签: php cakephp cakephp-3.0

我在Component中有一个功能,可以使用Gmail发送联系人邮件。无论出于何种原因,我的工作网络阻止了与Gmail的安全连接,如果我使用我的手机网络,例如它工作正常,所以很明显电子邮件配置很好。我真正感兴趣的是捕获FatalErrorException,所以我可以向控制器返回false并在网站上显示错误消息,但我没有这样做。

这是我的组件代码:

try{
  $correo = new Email();
  $correo
    ->transport('mail')              
    ->template('contacto_negocio')
    ->emailFormat('html')
    ->to($correoPara)
    ->from($correoDe, $nombreDe)
    ->replyTo($correoDe, $nombreDe)
    ->subject(__('Mensaje de contacto desde ').$sitio_nombre_secundario)
    ->viewVars([
      'sitio_nombre_secundario'=>$sitio_nombre_secundario,          
      'sitio_nombre' => $sitio_nombre,
      'nombreDe'=>$nombreDe,
      'correoDe'=>$correoDe,
      'mensaje'=>$mensaje
    ])        
    ->send();

} catch (FatalErrorException $ex){  
  return false;

} catch(SocketException $ex){   
  return false;

}catch (\Exception $ex) {
  return false;
} 

控制器中的代码:

if($this->Correo->contactoNegocio($correo, $nombreDe, $correoDe, $mensaje)){
  $respuesta = ['cod'=>1, 'mensaje'=>'Message sent'];                
}else{
  $respuesta = ['cod'=>0, 'mensaje'=>'<span style="color:red; font-size: 12px;">Message not sent.<span>'];
}

enter image description here

我错过了什么?

1 个答案:

答案 0 :(得分:1)

你的代码没有达到它可以捕获FatalErrorException的程度,因为执行时间错误或多或少是一个自己处理的关闭函数的结果。

你可以增加限制或尝试修改他们的关机方法,但你不能抓住&#34;这是一个例外,因为它在catch块之前停止执行。