簡體   English   中英

保存實體時捕獲原則異常

[英]Catching doctrine exceptions when saving entity

在研究Doctrine的異常處理時,我偶然發現了這個代碼示例,使我大聲懷疑這是否過大或可能有用:

  // Save entity
        try {
            $em->persist($someEntity);
            $em->flush();

            $this->logger->info("Saved someEntity");

        } catch (DBALException $e) {
            $this->logger->addError("DBALException [{code}]: {message}",
                array('code' => $e->getCode(), $e->getMessage()));
        } catch (PDOException $e) {
            $this->logger->addError("PDOException [{code}]: {message}",
                array('code' => $e->getCode(), $e->getMessage()));
        } catch (ORMException $e) {
            $this->logger->addError("ORMException [{code}]: {message}",
                array('code' => $e->getCode(), $e->getMessage()));
        } catch (Exception $e) {
            $this->logger->addError("Exception [{code}]: {message}",
                array('code' => $e->getCode(), $e->getMessage()));
        }

我總是只使用通用異常(代碼示例中的最后一個),並且想知道在大多數情況下這是否過大,除非有人想以不同的方式處理其中一個定義的異常?

我認為這並不過分,因為在某些特定情況下,您需要了解由於保存實體而產生的錯誤。

例如,如果由於創建自定義查詢而對參數編號有疑問,則您可能想知道是PDO問題還是DBAL問題,以了解在哪里更改代碼。

在許多情況下,您不需要所有此異常,但是在其他情況下,了解您的代碼的哪一部分不能完全修復該錯誤很重要。

您發布的內容是有關如何捕獲異常的罕見示例,但是對我來說,當您遇到一個非常深入而復雜的問題時,非常重要的一點是,要清楚,快速地了解哪個異常是由哪個供應商/依賴項/庫生成的,

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM