2013-03-28 257 views
2

嘗試執行異常處理和日誌記錄。所以,如果我有這樣的事情:joomla數據庫錯誤異常處理

$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); 

} 

我的問題是如何最好地測試我的異常代碼?以下來DB將剛剛獲得的Joomla輸出這個錯誤,我永遠也進不了我的異常代碼:

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

我希望能夠驗證異常,並記錄得到的印刷。

回答

1

嘗試在你的try/catch部分的嘗試部分添加throw語句。

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; 
} 
+0

這是有用的,但不是我正在尋找。我只是想知道如何用我的系統觸發catch語句,以便我可以測試它的實際工作。 – Tom

+1

對不起,沒有正確理解你。測試的最佳方法是進行不正確的查詢,例如選擇不存在的字段。 –