[英]Exception Handling in CodeIgniter
最近,我正在使用CodeIgniter
Framework學習PHP
。 我正在處理異常處理,但有一件事讓我感到驚訝的是,當database.php
設置中存在db_debug = TRUE
時,異常處理不適用於數據庫錯誤。
如果db_debug = FALSE
,我可以拋出並捕獲錯誤,但是當它為TRUE
,它會直接顯示包含數據庫錯誤的頁面。
這是我的代碼:
在Model
:
$this->db->insert('tbl_name',$data);
if (strpos($this->db->_error_message(),'constraint_name') !== FALSE)
{
throw new UniqueConstraintException($this->db->_error_message()); // UniqueConstraintException is customized excpetion
}
在Controller
:
try
{
//calling the method from model having above code
}
catch(UniqueConstraintException $ex)
{
echo "There is already item with same item name";
}
catch(Exception $ex)
{
echo $ex->getMessage();
}
即使存在db_debug = TRUE
設置,我是否可以對數據庫錯誤實現異常處理?
CodeIgniter的人對oop一無所知。 當你查看代碼時,你會在數據庫驅動程序中找到這樣的事情一百萬次(也不知道任何關於DRY的事情):
if (<some condition>) {
if ($this->db_debug) {
log_message('error', 'Invalid query: '.$sql);
return $this->display_error('db_invalid_query');
}
return FALSE;
}
所以不,你不能禁用這個“功能”。 但是你可以擴展 CI_DB_driver 類以解決這個問題,但是由於缺少DRY代碼,你必須覆蓋這個類的幾乎所有內容......
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.