gpt4 book ai didi

php - 重新抛出部分捕获的异常?

转载 作者:可可西里 更新时间:2023-10-31 22:54:36 26 4
gpt4 key购买 nike

我的代码预计在插入远程数据库时偶尔会出现唯一索引冲突。无法避免违规,因为我需要一个随机生成但人类可读的值。不幸的是,当这种情况发生时,PDO 只是抛出一个通用的 PDOException,所以我有一个包含这种可憎的循环:

do {
...
} catch (PDOException $e) {
if ($e->getCode() === '23000') {
continue; // have another go
} else {
throw new Exception("...", 1, $e); // reraise
}
} while(there was an exception);

我认为错误捕获会比搜索然后插入更好,因为使用四位数代码并且任何时候只有几百个事件代码,几乎不会发生冲突。

所以像 best practices for catching and re-throwing exceptions? 这样的问题和 Rethrow php exception into higher level catch block建议即使在 PHP 中,这也是不好的做法。我都捕获了一个异常我 99% 确定我会重新抛出,并且我正在使用异常进行流量控制。

在 PHP 中是否有更好的方法来执行此操作,或者我唯一的选择是在数据库中使用存储过程,该存储过程在失败时返回错误代码而不是异常。

最佳答案

如果你想重新抛出相同的异常,为什么不使用 just:

throw $e;

关于php - 重新抛出部分捕获的异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24442382/

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