2012-05-21 44 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