使用我的扩展从 Joomla 2.5 到 3.0,我正在努力解决如何进行数据库错误处理(因为不推荐使用 GetErrorNum,另请参阅Joomla!不推荐使用 JDatabase::getErrorNum(),请改用异常处理)。
根据上面链接的问题,似乎要采取的方法是为每个代码添加以下db->query()
代码:
if (!$db->query()) {
throw new Exception($db->getErrorMsg());
}
在我看来,这使得数据库错误处理比以前更加尴尬。到目前为止,我只是checkDBError()
在 DB 调用之后调用了一个函数,该函数查询 ErrorNum 并相应地处理任何可能的错误。
这与数据库查询的实际触发方式无关——有不同的方法可以做到这一点,并且在错误时会产生不同的结果:错误时$db->loadResult()
返回null
,$db->query()
返回false
。所以现在将对不同的数据库访问类型进行不同的检查。
没有任何通用的方法来处理这个问题,例如告诉 Joomla 在数据库问题上抛出一些异常的方法吗?还是我必须围绕 DatabaseDriver 编写自己的包装器才能实现这一目标?还是我可能遗漏了一些明显的东西?
还是我应该暂时忽略弃用警告并继续使用 getErrorNum()?我想让我的扩展面向未来,但我也不想用笨拙的错误处理逻辑把它弄得过于混乱。