gpt4 book ai didi

php - 保存实体时捕获 Doctrine 异常

转载 作者:行者123 更新时间:2023-12-04 13:22:02 25 4
gpt4 key购买 nike

在深入研究 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 问题,以便了解在哪里更改您的代码。

在许多情况下,您不需要所有这些异常,但在其他情况下,了解您的代码的哪一部分无法准确修复错误很重要。

你发布的是一个关于如何捕获异常的罕见示例,但对我来说,当你遇到一个非常深刻和复杂的问题时,清楚和更快地理解生成哪个异常以及从哪个供应商/依赖项/图书馆

关于php - 保存实体时捕获 Doctrine 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50319838/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com