2015-09-14 24 views
9

私はCakePHPのバージョン3.0で例外をキャッチしようと取り組んでいないが、動作しているようですしません:キャッチ例外:

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 
:それは例外をキャッチしない

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) { 
} 

かなり迷惑な、私はそれを使用して、ローカルサーバー上で送信失敗電子メールを送信しています。

ありがとうございます。

+2

あなたは、インポートクラスのいずれかを指しているが、ので、あなたのコード内の 'Exception'が実際に参照かどうか確認私が推測しなければならないのは、おそらくグローバル名前空間のネイティブ '\ Exception'クラスではないと言えます。 psの場合は、エラーを通知する際に必ずスタックトレースとコンテキスト情報を含めてください! – ndm

+0

Exceptionの代わりにRuntimeExceptionを使用して、そのトリックを行いました。 ありがとう! –

+0

@ Gael.D私はこの問題に苦しんでいます。ソリューションを使用してください。出力できませんでした。 – Yusuf

答えて

26

ちょうどダウ未回答の質問をもたらすために、ここで答えを追加すると、ダウン統計:

あなたは\Exceptionまたは私は場合にも、同様の問題があった

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

私は100年でそれを考えなかったでしょう。 –

3

より具体的な、名前空間、例外名を使用する必要があります私はMissingConnectionExceptionをキャッチしようとしました。

私の場合、次の行が私の問題を解決しました。

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

ご希望の場合はお手伝いをしてください。

0

あなたが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(); 
}