【发布时间】:2013-01-03 01:05:55
【问题描述】:
使用我的扩展从 Joomla 2.5 升级到 3.0,我正在努力解决如何进行数据库错误处理(因为 GetErrorNum 已被弃用,另请参阅 Joomla! JDatabase::getErrorNum() is deprecated, use exception handling instead)。
根据上面链接的问题,似乎要走的路是为每个db->query() 代码添加以下代码:
if (!$db->query()) {
throw new Exception($db->getErrorMsg());
}
在我看来,这使得数据库错误处理比以前更加尴尬。到目前为止,我只是在 DB 调用之后调用了一个 checkDBError() 函数,该函数会查询 ErrorNum 并相应地处理任何可能的错误。
这与数据库查询的实际触发方式无关 - 有不同的方法可以做到这一点,并且在错误时会产生不同的结果:$db->loadResult() 在错误时返回 null,$db->query() 返回 false。所以现在将对不同的数据库访问类型进行不同的检查。
没有任何通用的方法来处理这个,例如一种告诉 Joomla 在数据库问题上抛出异常的方法?还是我必须围绕 DatabaseDriver 编写自己的包装器才能实现这一目标?还是我可能遗漏了一些明显的东西?
或者我应该暂时忽略弃用警告并继续使用 getErrorNum()?我想让我的扩展能够适应未来,但我也不想用笨拙的错误处理逻辑把它弄得过于混乱。
【问题讨论】:
-
@user3145373 其他问题怎么会是重复的?这一篇是关于 Joomla 中的通用数据库错误处理,尤其是。 3.0,而您链接的那个是关于在 Joomla 2.5 中上传文件 - 虽然那里有一些数据库访问权限,但我没有看到 任何 错误处理在那里进行
标签: joomla joomla2.5 joomla3.0