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 邮件处停止,那么如何告诉 Zend 不会停止呢?

4

4 回答 4

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 回答
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 回答