京东6.18大促主会场领京享红包更优惠

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 5397|回复: 0

thinkphp5.1 中使用自定义异常处理类进行接管

[复制链接]

35

主题

0

回帖

10

积分

新手上路

积分
10
发表于 2021-8-7 22:02:41 | 显示全部楼层 |阅读模式 来自 中国
配置文件修改  J1 n' Y% H0 W. E" L; h8 s

7 j8 p! L$ U1 Jconfig/app.php, d: R, y+ [7 M/ ~$ }
自定义异常接管类出处& Z4 i# ^2 g1 }8 @, H
'exception_handle' => ‘\app\common\exception\ExceptionHandle',1 ~, j: w/ E- ~
自定义处理异常方法
* Q, h: u1 m( d2 u: N. {8 \5 d寡人的存放目录为 app/common/exception
, u" M& n6 w; h2 F- |. l6 z5 f$ `" k  oApiException.php" K- X2 L( |1 L2 q7 G
  1. namespace app\common\exception;use Exception;class ApiException extends Exception{                /**         * 构造函数         */        public function __construct(array $ApiErrConst, Throwable $previous = null)        {                $code = $ApiErrConst[0];                $message = $ApiErrConst[1];                        parent::__construct($message, $code, $previous);        }}
复制代码
ExceptionHandle.php
8 A! Q1 \) t2 p9 m
  1. namespace app\common\exception;use Exception;use think\exception\Handle;use app\common\exception\ApiException;use app\common\err\ApiErrCode;class ExceptionHandle extends Handle{        // 引入复用模块:JSON返回格式        use \app\common\traits\ResponseJson;         public function render(Exception $e)        {                                if($e instanceof ApiException) {                        $code = $e->getCode();                        $message = $e->getMessage();                        }else{                        $code = $e->getCode();                        if(!$code || $code < 0) {                                $code = ApiErrCode::ERROR_UNKNOW[0];                        }                        $message = $e->getMessage() ? $e->getMessage() : ApiErrCode::ERROR_UNKNOW[1];                }                                echo $this->jsonErrorData($code,$message); //该方法在下方                // 其他错误交给系统处理       // return parent::render($e);         }}
复制代码
错误码文件
( \$ y5 G$ {9 u3 l! B- C/ _5 w* `, I) Z  \' Y
存放目录:app/common/err
  1. namespace app\common\err;class ApiErrCode {        /**          * API通用错误码 const 定义常量         * error_code < 1000         */            const ERROR_UNKNOW = [0, "未知错误"];    const ERROR_URL = [1, "接口不存在"];    .......}
复制代码
复用模块
5 n) c& X8 W6 X, M' F' E& F: T6 c  i) s
针对API接口返回格式8 [/ r: C. f0 L, ~6 [9 m3 `
存放目录:app/common/traits
  1. namespace app\common\traits;trait ResponseJson{        /**         * API接口出现业务异常时时返回         * @author Leo          */        public function jsonErrorData($code,$message,$data = [])        {                return $this->jsonResponse($code, $message, $data);        }        /**         * API接口请求成功时返回         * @author Leo          */        public function jsonSuccessData($data = [])        {                return $this->jsonResponse(200, "Sucess", $data);        }        /**         * 返回一个JSON         * @author Leo          */        private function jsonResponse($code,$message,$data)         {                $content = [                        'code' => $code,                        'msg' => $message,                        'data' => $data                ];                return json_encode($content);        }}
复制代码
页面调用
! w( i% v! p1 d* G: n
  1. // 文件头部引入use app\common\exception\ApiException;use app\common\err\ApiErrCode;// 引入复用模块:JSON返回格式use \app\common\traits\ResponseJson;// 示例public function index() {        throw new ApiException(ApiErrCode::ERROR_URL);                // 自定义异常抛出}
复制代码
到此这篇关于thinkphp5.1 中使用自定义异常处理类进行接管的文章就介绍到这了,更多相关thinkphp5.1 自定义异常处理类内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
& m; m8 p; [( d1 I. v5 h9 o1 K/ `6 n8 }% n) k+ W
来源:http://www.jb51.net/article/216662.htm
, z/ s% d" J% x: R免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

帖子地址: 

梦想之都-俊月星空 优酷自频道欢迎您 http://i.youku.com/zhaojun917
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|梦想之都-俊月星空 ( 粤ICP备18056059号 )|网站地图

GMT+8, 2026-4-21 09:38 , Processed in 0.039072 second(s), 23 queries .

Powered by Mxzdjyxk! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表