【Codeigniter】try catch 在 model 中沒有作用

動機


codeigniter v3
在開發時,嘗試在 model 裡面添加 try cacth,但是並沒有抓住

過程


第一件事情就是google,關鍵字查詢以後馬上找到問題。
Stack overflow
大致上就是走框架的show error的話,他程式在走進你的catch前就被 exit()了
可是由於動的範圍太大了,所以改用另外一種方式

直接關閉db_debug,自己寫程式來處理錯誤
在config/database.php下面發現了這句

$db['default'] = array(
        ...
        'db_debug' => (ENVIRONMENT !== 'production'),
知道了他是由環境變數決定的
於是我去index.php中找到了
 * This can be set to anything, but default usage is:
 *
 *     development
 *     testing
 *     production
 *
 * NOTE: If you change these, also change the error_reporting() code below
 */
        //define('ENVIRONMENT', isset($_SERVER['CI_ENV']) ? $_SERVER['CI_ENV'] : 'development');
        define('ENVIRONMENT', isset($_SERVER['CI_ENV']) ? $_SERVER['CI_ENV'] : 'production');

解決方案


更新 index.php 中的環境變數,從開發改為線上
# vi index.php
define('ENVIRONMENT', isset($_SERVER['CI_ENV']) ? $_SERVER['CI_ENV'] : 'development');
改成
define('ENVIRONMENT', isset($_SERVER['CI_ENV']) ? $_SERVER['CI_ENV'] : 'production');

留言