嘿傢伙, 是否可以捕捉並忽略JError :: raiseError? 我使用JDatabase,如果用戶行爲'愚蠢'可能會發生重複的條目。 但這不是一個問題,可以默默地忽略。Joomla - 無聲地吞下JError :: raiseError消息
不幸的是,這個錯誤是打印在洞頁面上。現在我不想 刪除一個新的查詢只是爲了檢查這個主鍵是否已經存在。
嘿傢伙, 是否可以捕捉並忽略JError :: raiseError? 我使用JDatabase,如果用戶行爲'愚蠢'可能會發生重複的條目。 但這不是一個問題,可以默默地忽略。Joomla - 無聲地吞下JError :: raiseError消息
不幸的是,這個錯誤是打印在洞頁面上。現在我不想 刪除一個新的查詢只是爲了檢查這個主鍵是否已經存在。
要禁止在執行路徑調用的Joomla異常投擲:
JError::setErrorHandling(E_ALL, "ignore");
替代,你可以設置自己的自定義處理程序:
JError :: setErrorHandling(E_ALL, '回調',陣列('myClass','myErrorHandlerFunction'));
以上聲明「沒有來自raiseError的ESCAPE」是不正確的。只有在沒有找到錯誤處理程序的情況下才調用JExit。例如通過將一個無效的類/函數傳遞給SetErrorHandling。 – Frans 2011-08-12 12:17:35
有沒有ESCAPE raiseError
下面是Joomla的提高方法。正如你可以看到它使用jexit它調用PHP exit
function & raise($level, $code, $msg, $info = null, $backtrace = false)
{
jimport('joomla.error.exception');
// build error object
$exception = new JException($msg, $code, $level, $info, $backtrace);
// see what to do with this kind of error
$handler = JError::getErrorHandling($level);
$function = 'handle'.ucfirst($handler['mode']);
if (is_callable(array('JError', $function))) {
$reference =& JError::$function ($exception, (isset($handler['options'])) ? $handler['options'] : array());
} else {
// This is required to prevent a very unhelpful white-screen-of-death
jexit(
'JError::raise -> Static method JError::' . $function . ' does not exist.' .
' Contact a developer to debug' .
'<br /><strong>Error was</strong> ' .
'<br />' . $exception->getMessage()
);
}
//store and return the error
$GLOBALS['_JERROR_STACK'][] =& $reference;
return $reference;
}
謝謝,這是完全正確的。我查看了JDatabase :: query方法,發現只有在設置了_debug時纔會引發錯誤。所以我看看我的配置,看到我打開系統調試... ups :)對於 – 2011-02-21 10:44:02
如果覆蓋現有的行不要緊,你可以使用
REPLACE INTO 'table' set 'field'=1 etc etc
,這將創造一個排或替換現有的。如果該行存在,那應該使它完全沒有錯誤發生。
yup這是正確的。謝謝。我已經爲我的問題找到了另一個解決方案只需要打開調試消息。 ups ^^ – 2011-02-21 10:46:40
找到解決方案。系統調試已啓動。在配置 - 設置中關閉它後,錯誤不再顯示。 – 2011-02-21 10:45:18