0

スクリプトを実行すると、何か問題が発生し、例外がスローされますが、代わりにすべてのスクリプトが停止します。zend に続行するように指示するにはどうすればよいですか?

このエラーは、try catch ブロックがあるメールをフェッチすると表示されますが、キャッチされません。

Fatal error: Uncaught exception 'Zend\Mail\Exception\RuntimeException' with message 'Line "X-Assp-Message/IP-Score: 

ありがとう。

私のコードは、メールを取得するための単純なクラスです:

$listm  = new Zend\Mail\Storage\Pop3(array('host' => $this->mServer,'user' => $this->mMail, 'password' => $this->mPassword));

foreach ($listm as $msgp3)
{
    try 
    {
        e($msgp3->from);
        e($msgp3->to);
        e($msgp3->subject);
        e($msgp3->date);
        e(strtotime($msgp3->date));
        e($msgp3->messageid);
    } catch (Exception $e) {
        e($e->getMessage());
    }
}

私のコードは 10em メールで停止します。

4

4 に答える 4

0

私は最終的に私の問題がどこにあるかを見つけました:

ここでメッセージをフェッチするとエラーが返されるので、 for 命令で:

foreach ($listm **as $msgp3**)

メッセージがフェッチされているときにエラーをキャッチするには、次の方法でフェッチする必要があります。

$maxMessage = count($messageList);
        for($i = 0; $i < $maxMessage; $i++) 
        {
            try{
                $msgp3 =  $messageList->getMessage($i);                 
                //--- WORK ON msgp3
                }catch(Exception $e) {
                echo 'E2->'.$e->getMessage();
            }
        }

そして今、私のスクリプトは続きます...

于 2013-02-22T12:47:15.453 に答える
0

例外のポイントは、何か問題が発生したことを通知することであり、それを適切に処理するコードを作成する必要があります。あなたのコードを見ないと、デバッグするのはちょっと難しいです。

于 2013-02-22T10:26:21.557 に答える
0

例外が指摘されたときにプロセスを停止したくない場合。try and catch メソッドを使用できます。このような:

 try {
    DoSomethingReallyBad()
 }
 catch(RuntimeException $e) {
    // do nothing
 }

 // go further

例外が呼び出されたときに言わなければなりません。最後のタスクのプロセスが終了します。

注: 私はこれをテストしませんでした!

于 2013-02-22T10:32:16.743 に答える
0

どのように例外をキャッチしていますか? 質問で try/catch コードを提供していただけますか?

Zend では、スローされる完全な zend 例外クラスを使用する必要があります。この場合は でありZend\Mail\Exception\RuntimeException、 になりZend_Mail_Exception_RuntimeExceptionます。

try
{
  // ...
}
catch (Zend_Mail_Exception_RuntimeException $e)
{
  // ...
}
于 2013-02-22T10:32:41.443 に答える