国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

首頁 > 編程 > PHP > 正文

關于ThinkPHP中的異常處理詳解_php實例

2020-03-22 20:31:39
字體:
來源:轉載
供稿:網友
和PHP默認的異常處理不同,ThinkPHP拋出的不是單純的錯誤信息,而是一個人性化的錯誤頁面,下面這篇文章主要給大家介紹了關于ThinkPHP中異常處理的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下

什么是異常

從更加廣泛的角度來看,異常包含兩個方面,一方面是程序執行時由于語法、運行時錯誤等導致的異常,一方面時沒有給予正確的反饋,如客戶端要查詢某個產品,沒有查詢到,我認為這也屬于異常的一種。

第一種異常TP框架本身會在頁面中輸出錯誤信息,但是第二種異常則一般不會輸出任何信息,所以非常不方便調試。

本文將詳細介紹關于ThinkPHP異常處理的相關內容,分享出來供大家參考學習,下面話不多說了,來一起看看詳細的介紹吧。

前提環境

現在 PHP 在很多時候是為前端提供接口,所以我們的異常處理也基于這一點進行處理。

在開發階段,TP 原有的異常處理是在頁面中輸出異常信息,這一點能夠滿足需求,但在生產環境中,則需要以其他方式處理異常。

本文都是針對生產環境的異常處理

AOP 編程

現在在很多語言中,都非常流行 AOP 編程思想,即面向切面編程思想,通俗的說,就是用統一的方式處理問題,而不是用相同的方式分別處理多個問題,對于異常處理來說,就是定義統一的異常信息,用統一的方式處理

大致思路

自定義異常處理類,重寫默認異常處理類的 render 方法,然后配置使用自定義異常處理類處理所有異常

代碼實現

在根目錄下創建目錄 exception,在其下創建ExceptionHandle.php,此類要繼承 handle 類

html' target='_blank'>class ExceptionHandler extends Handle

創建幾個屬性,用于定義異常信息

// http 錯誤碼 private $code; // 自定義異常信息 private $msg; // 自定義錯誤碼 private $errorCode;

覆蓋 Handle 類中的render 方法,當我們在代碼中使用 throw new Exception() 方式拋出異常信息時,其實就是調用了 render 方法,所以我們要重寫此方法,以返回我們自己的信息

public function render(Exception $ex)  return json([ msg = 自定義異常信息 ]); nbsp; }

下面新建控制器 Product,添加方法,進行測試

public function getProduct($id)  try{  3/0;  catch(Exception $ex){  throw $ex;  }

然后添加如下路由

Route::get( product/:id , api/v1.Product/getProduct 

輸入如下url 測試

http://z.cn/product/2

頁面輸出結果如下

可見,其并沒有執行自定義異常處理函數

使用自定義的異常處理

在 config.php 中修改如下配置

// 異常處理handle類 留空使用 /think/exception/Handle  exception_handle = app/lib/exception/ExceptionHandler ,

然后再運行

自定義異常處理類

一類異常是用戶行為導致的異常,比如沒有查詢到符合條件的數據(從另一個角度來說,這其實不算異常),一類錯誤是運行時錯誤。而用戶導致的異常可能分為很多種,所以需要自定義相關的類。

首先定義一個父類

class BaseException extends Exception  //http 狀態碼  public $code; //錯誤具體消息  public $msg; //自定義錯誤碼  public $errorCode;  //構造函數用于接收傳入的異常信息,并初始化類中的屬性  public function __construct($params)  if (!is_array($params)) {  return;  if (array_key_exists( code , $params)) {  $this- code = $params[ code  if (array_key_exists( msg , $params)) {  $this- msg = $params[ msg  if (array_key_exists( errorCode , $params)) {  $this- errorCode = $params[ errorCode }

再定義一個處理找不到產品信息的異常處理類,用來重寫父類中的各個屬性,而且這個類中的屬性信息也可能會被修改,如 msg

class ProductNotFoundException extends BaseException  //http 狀態碼  public $code = 404; //錯誤具體消息  public $msg = 請求的產品不存在 //自定義錯誤碼  public $errorCode = 40000; }

處理不同異常

在 render 方法中,根據異常的不同分別處理

//分別處理兩種不容類型異常:1、用戶錯誤 2.代碼與運行時錯誤  if ($ex instanceof BaseException) {  } else {  }

說明:在 throw 異常時,會執行 render 函數,同時會將拋出的異常對象復制給參數 $ex,所以可以根據此參數判斷異常類型

現在的關鍵是生產環境,所以希望返回的異常信息,前端人員能夠看懂,而不是像上面那樣在頁面中輸出錯誤信息,還包括堆棧信息等。

那么前前端賀后端人員都能夠看懂的信息一定是 json(當然也可以是xml)了,修改 render 方法

if ($ex instanceof BaseException) {  $this- code = $ex- code;  $this- msg = $ex-  $this- errorCode = $ex- errorCode;  } else { //這里是在運行時產生的各種異常,所以無法準確輸出異常信息,所以只能統一輸出是服務器錯誤信息  $this- code = 500;  $this- msg = 服務器內部錯誤  $this- errorCode = 999;  }

然后以 json 格式返回錯誤信息

$result = [  msg = $this- msg,  error_code = $this- errorCode,  request_url = request()- url()  return json($result,$this- code);

至此,全局的異常處理就編寫好了,下面在 product.php 中編碼進行測試

public function getProduct($id)  //處理程序運行時錯誤  /*try{  3/0;  catch(Exception $ex){  throw $ex;  }*/  //處理用戶行為產生的錯誤  $error=[  msg = 沒有找到合適的產品  $ex=new ProductNotFoundException($error);  throw $ex;  }

提示:生產環境不要忘了將 app_debug 修改為 false

總結

您可能感興趣的文章:

PHP7基于curl實現的上傳圖片功能php技巧

PHP區塊查詢實現方法分析php技巧

PHP5.0~5.6 各版本兼容cURL文件上傳功能實例分析php技巧






以上就是關于ThinkPHP中的異常處理詳解_php實例的詳細內容,PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
中文字幕视频在线免费| av在线中文| 尤物免费看在线视频| 日本综合一区二区三区| 三级小说一区| 九九热免费在线视频| 国产免费视频| 精品一区二区观看| 波多野结衣久久高清免费| 男女羞羞视频在线观看| 成人无遮挡免费网站视频在线观看| 激情丁香婷婷| jlzzjlzz欧美| 国产一级二级在线| 亚洲一本大道| √天堂中文在线| 69久久精品| 国产男女av| 樱花草在线观看www| 国产在线视频自拍| 国产国产国产国产国产国产| 欧美午夜电影一区二区三区| 天堂资源最新版在线视频观看免费网| 最新超碰在线| 久久精品最新免费国产成人| 国产成人福利| 日本中文字幕在线2020| 在线播放黄色网址| 国产区视频在线播放| 久草.com| 噜噜噜噜噜在线视频| www.夜夜操.com| 国产精品久久麻豆| 成人欧美精品久久久久影院| 一级黄色av| 在线中文字幕视频观看| 国产激情视频在线观看| 国产一卡二卡3卡4卡四卡在线| 免费在线你懂的| 日本一二三区视频免费高清| 国产99在线|亚洲| 国产a国产a国产a| 91av资源在线| 狠狠干天天干| 国产在线资源| 中文字幕免费中文| 日本中文字幕在线播放| 丁香六月婷婷| 国产一区二区在线|播放| 中文字幕高清av| 国产亚洲依依| 91久久麻豆| 亚洲精品久久久成人| 亚洲一区免费在线| 欧美日韩视频精品二区| 免费看av大片| 中文字幕专区| 国产丝袜护土调教在线视频| 国产美女视频一区二区三区| 激情在线视频播放| 国产调教视频在线观看| 国产高清大尺度一区二区不卡| 精品剧情v国产在线观看| 亚洲综合在线不卡| 国产在线更新| 91欧洲在线视精品在亚洲| 亚洲第一成人在线视频| 好看的中文字幕在线播放| 中文字幕不卡| av在线不卡播放| 99热在线免费播放| 精精国产xxxx视频在线中文版| 一本大道香蕉久久| 国产在线播放av| 一本大道五月香蕉| 中文字幕在线观看播放| 在线免费国产| 国产一级黄色片免费| 亚洲天堂久久久| 国产第一页在线视频| 黄色片免费在线| 四虎成人欧美精品在永久在线| 91sp网站在线观看入口| 亚洲www色| 69国产精品| 国产精品视频福利一区二区| 在线激情小视频| 天堂资源最新版在线视频观看免费网| 国产成人精品综合网站| 国产91大片| 久久精品视频观看| www.亚洲视频| 亚洲欧美自拍另类| 精品福利视频导航大全| 国产日韩欧美精品一区二区三区 | 中文字幕国产欧美| 久久99精品久久久久久野外| 日本久久国产| av在线二区| 一本免费视频| av中文在线| 香蕉视频在线看| av人人综合网| www.国产精| 懂色一区二区三区| 国产一区二区影视| 国产精品18久久久久久久久久| 国产精品国精产品一二| 国产精品视频一区二区免费不卡 | 国产精品久久在线| 国产女主播在线| 国产高清视频免费最新在线| 国产精品视频h| 精品国产一区二区三区不卡在线| 91九色在线看| 男人操女人免费网站| 成人av小说网| 91在线网址| 亚洲精品影视在线| 国产在线视精品麻豆| 天堂中文资源在线| 精品电影在线| 黄色毛片在线观看| 精品欧美不卡一区二区在线观看| 在线免费看黄av| 激情六月丁香| 国产精品久久在线| 亚洲精品男人| 最近中文字幕av免费高清| 精品免费视频一卡2卡三卡4卡不卡 | 本道综合精品| 国产精品第八页| 久久五月精品中文字幕| 国产二区三区在线| 玖玖在线视频| 在线天堂中文| 最新亚洲精品国自产在线观看| 中文一区在线观看| 国产免费人人看| 国产高清视频在线观看| 碰草在线视频| av网址在线看| 一色桃子av在线| 国产福利电影在线观看| 午夜免费福利在线观看| 九色在线网站| 久艹在线视频| 黄色在线视频观看网站| 四虎成人精品在永久免费| 精品极品三级久久久久| 国产欧美日韩精品综合| 最新av中文字幕| 国产麻豆高清视频在线第一页| 97操碰视频| 国产三区在线观看| 国产一卡2卡3卡4卡网站免费| 蜜桃av网站| 欧美一级久久久久久久久大| 国产69久久| 国产黄色免费| www狠狠操| 国产精品久久久久一区二区国产 | 国产天堂在线播放视频| 黄色网址在线免费播放| 免费网站看黄yyy222| 亚洲第一区视频| 精品麻豆视频| 先锋av资源网| 狠狠综合久久久综合| 91超碰免费在线| 国产福利小视频在线观看| 国产va在线观看| 亚洲人av在线| 黄色国产网站在线播放| 狠狠操狠狠色| 国产经典自拍视频在线观看| 国产高清视频在线播放| 91网页在线观看| 亚洲人av在线| 国产剧情在线一区| 国产porn在线| 夜夜爽视频导航| 非洲黑人最猛性xxxx交| 国产精品yjizz视频网一二区| av影视在线看| 中文字幕亚洲精品视频| 99re6在线视频精品免费| 欧美日韩不卡中文字幕在线| 国产一级黄色| www在线播放| 国产视频福利在线| 欧美日韩一区二区三区视视频 | 国产高清免费视频| 精品黄色免费中文电影在线播放| 亚洲字幕成人中文在线观看| 国产麻豆精品高清在线播放| av福利在线| 最新国产在线| 久热国产在线视频| 国产porny蝌蚪视频|