日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > php >内容正文

php

PHP/TP5 接口设计中异常处理

發(fā)布時間:2025/7/25 php 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PHP/TP5 接口设计中异常处理 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

PHP提供 Exception 類來處理異常

new Exception('錯誤信息(默認(rèn)為空)','錯誤代碼(默認(rèn)0)','異常鏈中前一個異常')

然后可以通過

e -> getMessage() 獲取異常信息 e -> getCode() 獲取異常錯誤碼

處理異常

try {//可能拋出異常代碼throw new Exception("Error Processing Request", 1); } catch (Exception $e) {// 1. 記錄日志// 2. 處理異常,程序繼續(xù)進(jìn)行 / 繼續(xù)向上拋出異常 / 終止程序,打印異常錯誤}

在ThinkPHP中,框架自帶異常處理類,返回錯誤信息以HTML頁面形式展示,如果程序出現(xiàn)錯誤開發(fā)人員沒有主動捕捉異常,則會被框架捕捉,然后拋出HTML

當(dāng)在接口設(shè)計中時,由于無法得知客戶端類型,所以HTML的形式客戶端可能無法解析,此時便需要重寫異常類,以json的形式返回錯誤信息給客戶端

異常分類:

  • 自定義異常:通常是由客戶端傳遞參數(shù)錯誤導(dǎo)致,此類異常不需要記錄日志,但需要返回錯誤原因
  • 服務(wù)器異常:代碼錯誤導(dǎo)致異常,此類異常需要記錄日志,但不需要返回錯誤原因

服務(wù)器異常錯誤一般由PHP或者框架拋出,自定義異常需要手動捕捉,然后拋出

實現(xiàn):

在Application/common目錄下新建 exception 目錄,此目錄為異常類庫目錄

Application/common/exception/ExceptionHandler (重寫后的異常處理類)

<?php namespace app\common\exception;use Exception; use think\exception\Handle; use think\facade\Request; use think\Log;class ExceptionHandler extends Handle {private $code;private $msg;private $errorCode;public function render(Exception $e) {if ($e instanceof BaseException) {//如果是自定義異常,則控制http狀態(tài)碼,不需要記錄日志//因為這些通常是因為客戶端傳遞參數(shù)錯誤或者是用戶請求造成的異常//不應(yīng)當(dāng)記錄日志$this->code = $e->code;$this->msg = $e->msg;$this->errorCode = $e->errorCode;} else {// 如果是服務(wù)器未處理的異常,將http狀態(tài)碼設(shè)置為500,并記錄日志if (config('app_debug')) {// 調(diào)試狀態(tài)下需要顯示TP默認(rèn)的異常頁面,因為TP的默認(rèn)頁面// 很容易看出問題return parent::render($e);}$this->code = 500;$this->msg = 'sorry,we make a mistake. (^o^)Y';$this->errorCode = 999;$this->recordErrorLog($e);}$request = Request::instance();$result = ['msg' => $this->msg,'error_code' => $this->errorCode,'request_url' => $request = $request->url(),];return json($result, $this->code);}/** 將異常寫入日志*/private function recordErrorLog(Exception $e) {Log::init(['type' => 'File','path' => LOG_PATH,'level' => ['error'],]);Log::record($e->getMessage(), 'error');}}

這個類會判斷異常來源,并作出相應(yīng)處理

創(chuàng)建處理類后,需要修改對應(yīng)配置文件,讓這個類成為框架默認(rèn)異常處理類

在application/config/app.php

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

?

Application/common/exception/BaseException (自定義異常類基類,基礎(chǔ)PHP自帶異常類Exception)

<?php namespace app\common\exception; use think\Exception;/*** Class BaseException* 自定義異常類的基類*/ class BaseException extends Exception {public $code = 400;public $msg = 'invalid parameters';public $errorCode = 999;/*** 構(gòu)造函數(shù),接收一個關(guān)聯(lián)數(shù)組* @param array $params 關(guān)聯(lián)數(shù)組只應(yīng)包含code、msg和errorCode,且不應(yīng)該是空值*/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'];}} }

?

自定義異常類

Application/common/exception/UserException (自定義異常,這里舉例User模塊的異常)

<?phpnamespace app\common\exception;class UserException extends BaseException {public $code = 404;public $msg = '用戶不存在';public $errorCode = 60000; }

?

拋出自定義異常

try {//todo...throw new \app\common\exception\UserException();} catch (Exception $e) {}

此時異常展示不再是TP自帶的HTML頁,而是

{"msg": "用戶不存在","error_code": 60000,"request_url": "/wx_shop/public/index.php/admin/banner/list" }

  

轉(zhuǎn)載于:https://www.cnblogs.com/xiaoliwang/p/9345088.html

《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的PHP/TP5 接口设计中异常处理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久免费在线观看视频 | 日本xxxxwww| 亚洲狼人天堂 | 国产区精品 | 狠狠操导航 | 日韩一区网站 | 狠狠精品干练久久久无码中文字幕 | 狠狠精品干练久久久无码中文字幕 | 久久久久久久穴 | 日韩少妇诱惑 | 欧美亚色 | 亚洲最新在线观看 | 成人av手机在线 | 国产永久视频 | 欧美一级做a爰片久久高潮 久热国产精品视频 | 国产乱偷| 国产激情免费 | 欧美日韩在线成人 | 日日夜夜一区 | 国产精品电影院 | 久久精品a亚洲国产v高清不卡 | 久久婷婷热 | 亚洲久久在线 | 69日本xxxxxxxxx30| 夫妻性生活自拍 | 亚洲爱爱爱 | 超碰人人超碰 | 精品乱人伦一区二区三区 | 动漫精品一区二区三区 | 新国产视频 | 亚洲丝袜中文字幕 | 日日夜夜精品视频免费 | 黄色avav | 日韩一区精品 | 91精品国产乱码久久久久 | 法国空姐在线观看视频 | 国产又色又爽无遮挡免费动态图 | www黄色网 | 法国空姐在线观看完整版 | 黄色一级大片免费版 | 欧美久久久久久久久久久久久久 | 国产一区亚洲二区 | 国产又黄又粗又猛又爽视频 | 亚洲精品xxxxx | 免费看一级一片 | 国产福利一区二区三区 | 国产成人99久久亚洲综合精品 | wwwww在线观看 | 9l视频自拍蝌蚪9l视频 | 三级毛毛片| xxx日本黄色 | 亚洲成人自拍视频 | 国产在线免费视频 | 欧美日韩一区二区三区 | 日韩精品999| 日韩欧美一本 | 9999av| 亚洲国产成人一区二区精品区 | 免费精品在线观看 | 超碰成人福利 | 一区二区精品在线观看 | 亚洲欧洲精品一区二区三区 | 中文字幕一区二区人妻痴汉电车 | 丁香视频在线观看 | 白丝动漫美女 | 黄色大片一级 | 无遮挡毛片 | 尹人在线视频 | 国产一级二级三级精品 | 久热国产精品视频 | 国产精品视频久久久久 | 综合久久91 | 男女被到爽流尿 | 51成人做爰www免费看网站 | 免费看欧美大片 | 久久这里只有精品9 | 伊人伊人伊人伊人 | 久久久久成人精品无码中文字幕 | 国产真实乱偷精品视频 | 69色| 国产一级一片免费播放放a 丁香六月色 | 在线免费激情视频 | 91影院在线播放 | 中文字幕日韩无 | 激情五月综合 | 青娱乐在线视频观看 | 少妇做爰k8经典 | 亚洲精品免费视频 | 色多多导航 | 武林美妇肉伦娇喘呻吟 | 国产成人一区二区 | va在线视频 | 男生操男生网站 | 伊人久在线| 日本欧美国产在线 | 醉酒壮男gay强迫野外xx | 轻点好疼好大好爽视频 | 夜夜伊人 | 一级全黄毛片 |