【问题标题】:php catching dependent library exception correctlyphp正确捕获依赖库异常
【发布时间】:2023-03-08 05:05:01
【问题描述】:

大家好,我遇到了异常问题。

以下代码块执行此结果:

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 块,异常总是被捕获为“未捕获”

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

感谢任何朋友!

【问题讨论】:

  • 它是否适用于catch (Exception $e)

标签: php exception exception-handling doctrine-orm


【解决方案1】:

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

当您不在 Doctrine 命名空间中时,您应该通过在异常类前面加上反斜杠来使其成为绝对类:

\Doctrine\DBAL\Types\ConversionException

【讨论】:

    【解决方案2】:

    您提供的代码块引发了您正在捕获的其他类型的异常。然后您尝试将此异常转换为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/>';
    }
    

    这应该可行。

    【讨论】:

    • 是的,它有效,但我需要捕获该异常。感谢您的帮助
    猜你喜欢
    • 1970-01-01
    • 2015-10-09
    • 2018-07-28
    • 1970-01-01
    • 2021-12-09
    • 1970-01-01
    • 2016-08-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多