<address id="r9vd9"><address id="r9vd9"><listing id="r9vd9"></listing></address></address>

      歡迎您光臨深圳塔燈網絡科技有限公司!
      電話圖標 余先生:13699882642

      易優CMS異常處理

      發表日期:2018-12 文章編輯:小燈 瀏覽次數:4828

      和PHP默認的異常處理不同,ThinkPHP拋出的不是單純的錯誤信息,而是一個人性化的錯誤頁面。

      默認異常處理

      在調試模式下,系統默認展示的錯誤頁面:

      只有在調試模式下面才能顯示具體的錯誤信息,如果在部署模式下面,你可能看到的是一個簡單的提示文字,例如:

      本著嚴謹的原則,5.0版本默認情況下會對任何錯誤(包括警告錯誤)拋出異常,如果不希望如此嚴謹的拋出異常,可以在應用公共函數文件中或者配置文件中使用error_reporting方法設置錯誤報錯級別(請注意,在入口文件中設置是無效的),例如:

      // 異常錯誤報錯級別,error_reporting(E_ERROR | E_PARSE );

      異常處理接管

      框架支持異常頁面由開發者自定義類進行處理,需要配置參數exception_handle

      // 異常處理handle類 留空使用 \think\exception\Handle'exception_handle' => '\\app\\common\\exception\\Http',

      自定義類需要繼承Handle并且實現render方法,可以參考如下代碼:

      <?phpnamespace app\common\exception;use Exception;use think\exception\Handle;use think\exception\HttpException;class Http extends Handle{public function render(Exception $e){// 參數驗證錯誤if ($e instanceof ValidateException) {return json($e->getError(), 422);}// 請求異常if ($e instanceof HttpException && request()->isAjax()) {return response($e->getMessage(), $e->getStatusCode());}//TODO::開發者對異常的操作//可以在此交由系統處理return parent::render($e);}}

      需要注意的是,如果配置了'exception_handle',且沒有再次調用系統render的情況下,配置http_exception_template就不再生效,具體可以參考Handle類內實現的功能。

      V5.0.11版本開始,可以通過閉包定義的方式簡化異常自定義處理,例如,上面的自定義異常類可以改為直接配置exception_handle參數:

      'exception_handle'=>function(Exception $e){// 參數驗證錯誤if ($e instanceof \think\exception\ValidateException) {return json($e->getError(), 422);}// 請求異常if ($e instanceof \think\exception\HttpException && request()->isAjax()) {return response($e->getMessage(), $e->getStatusCode());}}

      部署模式異常

      一旦關閉調試模式,發生錯誤后不會提示具體的錯誤信息,如果你仍然希望看到具體的錯誤信息,那么可以如下設置:

      // 顯示錯誤信息'show_error_msg'=>true,

      異常捕獲

      可以使用PHP的異常捕獲進行必要的處理,但需要注意一點,在異常捕獲中不要使用think\Controller類的error、success和redirect方法,因為上述三個方法會拋出HttpResponseException異常,從而影響正常的異常捕獲,例如:

      try{Db::name('user')->find();$this->success('執行成功!');}catch(\Exception $e){$this->error('執行錯誤');}

      應該改成

      try{Db::name('user')->find();}catch(\Exception $e){$this->error('執行錯誤');}$this->success('執行成功!');

      本頁內容由塔燈網絡科技有限公司通過網絡收集編輯所得,所有資料僅供用戶參考了本站不擁有所有權,如您認為本網頁中由涉嫌抄襲的內容,請及時與我們聯系,并提供相關證據,工作人員會在5工作日內聯系您,一經查實,本站立刻刪除侵權內容。本文鏈接:http://www.webpost.com.cn/11157.html
      相關cms文章
       八年  行業經驗

      多一份參考,總有益處

      聯系深圳網站公司塔燈網絡,免費獲得網站建設方案及報價

      咨詢相關問題或預約面談,可以通過以下方式與我們聯系

      業務熱線:余經理:13699882642

      Copyright ? 2013-2018 Tadeng NetWork Technology Co., LTD. All Rights Reserved.    

      国产成人精品综合在线观看