php正确捕获依赖库异常

时间:2012-05-21 08:13:50

标签: php exception exception-handling doctrine-orm

大家好,我有异常问题。

以下代码块执行此结果:

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/>';
  }
}

我需要显而易见的是首先捕获带有错误的对象,但是稍后继续使用其他对象

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

让我指定正确的类型或什么?

谢谢anybuddy!

2 个答案:

答案 0 :(得分:2)

这可能是由命名空间解析规则引起的。

当你不在Doctrine命名空间本身时,你应该通过在反斜杠前面添加前缀来使异常类绝对:

\Doctrine\DBAL\Types\ConversionException

答案 1 :(得分: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/>';
}

这应该有用。