2

尝试进行异常处理和日志记录。所以,如果我有这样的事情:

$db = JFactory::getDbo();
$query = $db->getQuery(true);

$query->select('*')
$query->from('#__users');

try
{
    $db->setQuery($query);
    $result = $db->loadResult();
}
catch (RuntimeException $e)
{
    $e->getMessage();
    JLog::add('This query failed: '.$query);

}

我的问题是如何最好地测试我的异常代码?删除数据库只会让 Joomla 输出这个错误,我永远不会进入我的异常代码:

Database connection error (2): Could not connect to MySQL.

我希望能够验证异常并打印日志。

4

2 回答 2

2

我就是这样做的。首先在入口点文件中初始化记录器:

JLog::addLogger(
    array('text_file' => 'com_mycom.php'),
    JLog::ALL ^ JLog::ERROR,
    'com_mycom'
);

JLog::addLogger(
    array('text_file' => 'com_mycom.errors.php'),
    JLog::ERROR,
    'com_mycom'
);

然后在模型中使用它:

try
{
    $rows = $this->_db->loadObjectList();
}
catch (Exception $e)
{
    JLog::add($e->getMessage(), JLog::ERROR, 'com_mycom');
    return false;
}
于 2013-03-28T19:29:21.713 回答
1

尝试在 try/catch 部分的 try 部分添加 throw 语句。

于 2013-03-28T20:57:14.583 回答