2012-05-21 78 views
1

大家好我有一个异常的问题。php正确捕获依赖库异常

下面的代码块这样做的结果:

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 block,这个例外总是被捕获为“uncaught”

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

谢谢anybuddy!

+0

它与'catch(Exception $ e)'工作吗? –

回答

2

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

当你在教义名称空间本身不是,你应该做的异常类绝对的前面加上一个反斜线它:

\Doctrine\DBAL\Types\ConversionException 
+0

是的这表明我怎么愚蠢:DDD – giuseppe

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

这应该工作。

+0

是的,它的工作原理,但我需要赶上那个例外。谢谢你的帮助 – giuseppe