1

大家好,我有一个例外的问题。

以下代码块执行此结果:

Fatal error: Uncaught exception 'Doctrine\DBAL\Types\ConversionException' with message 'Could not convert database value .....

代码:

foreach ($result as $indexArray => $objectID) {
  try {
    $tempObject = new OggettoEbayDB();
    $tempObject = $entityManager->find('OggettoEbayDB',$objectID);
    if($tempObject->checkValid()){
    //.... do something else      
    }    
  } catch(Doctrine\DBAL\Types\ConversionException $e){
    $arrayOggettoEbayDBDeleted [] = '<b>Oggetto con id -> '.$tempObject->getId().' ha dato problemi con il seguente messaggio '.$e->getMessage().'<br/><br/>';
  }
}

我需要首先捕获有错误的对象,但稍后在其他对象上继续 foreach

无论如何我无法进入 catch 块,异常总是被捕获为“未捕获”

我必须指定正确的类型还是什么?

谢谢任何朋友!

4

2 回答 2

2

这可能是由于命名空间解析规则造成的。

当你不在 Doctrine 命名空间本身时,你应该通过在它前面加上一个反斜杠来使异常类成为绝对类:

\Doctrine\DBAL\Types\ConversionException
于 2012-05-21T08:25:10.700 回答
1

您提供的代码块引发了您正在捕获的其他类型的异常。然后,您试图将此异常转换为Doctrine\DBAL\Types\ConversionException引发不再捕获的新异常。

先试试这个:

...
try { ... }
catch(\Exception $e) {
    $arrayOggettoEbayDBDeleted [] = '<b>Oggetto con id -> '.$tempObject->getId().' ha dato problemi con il seguente messaggio '.$e->getMessage().'<br/><br/>';
}

这应该有效。

于 2012-05-21T08:29:20.727 回答