Cakephp 3中的捕获异常:无法正常工作

Gae*_*l.D 10 php cakephp exception cakephp-3.0

我试图在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) {
}
Run Code Online (Sandbox Code Playgroud)

它没有捕获异常:

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
Run Code Online (Sandbox Code Playgroud)

非常讨厌,我用它来捕获本地服务器上的失败电子邮件发送.

非常感谢.

Jos*_*uez 34

在这里添加答案,只是为了将未解答的问题统计数据降低:

您需要使用\Exception或更具体的命名空间的异常名称

try {
    // code
} catch (\Exception $e) {
    // error
}
Run Code Online (Sandbox Code Playgroud)

  • 我不会在100年内想到这一点. (4认同)

elq*_*sta 5

当我试图赶上时,我遇到了类似的问题MissingConnectionException

就我而言,以下几行解决了我的问题。

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

希望对你有帮助。