簡體   English   中英

CodeIgniter中的異常處理

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM