|
|
配置文件修改
, z$ i$ f" E6 O: w# [0 I L: Y' ]5 X- H" w) z; X% O0 Q7 ~' n
config/app.php
/ M( ]; l2 R" E; s自定义异常接管类出处. c5 M' h5 w$ d: u& c, I
'exception_handle' => ‘\app\common\exception\ExceptionHandle',
, N- r; h7 `3 C2 Y自定义处理异常方法
& k6 [' S) ~, |寡人的存放目录为 app/common/exception; U2 O# G3 [3 Q0 Z V3 R' c
ApiException.php
. y/ C E. z9 f7 S" i- 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
3 ^6 ^5 \' O/ O: r0 j+ |5 g9 d- 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); }}
复制代码 错误码文件
% `0 D8 U4 A3 J
& G4 g1 Y0 g3 g存放目录:app/common/err- namespace app\common\err;class ApiErrCode { /** * API通用错误码 const 定义常量 * error_code < 1000 */ const ERROR_UNKNOW = [0, "未知错误"]; const ERROR_URL = [1, "接口不存在"]; .......}
复制代码 复用模块: U6 G2 }# A" ~/ s7 Y
2 E$ g3 J3 ~) C& G针对API接口返回格式
1 Q/ m% y$ [, o8 C" ^存放目录:app/common/traits- 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); }}
复制代码 页面调用
" t0 R* I7 h: t$ d; ]- // 文件头部引入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 自定义异常处理类内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
& R. n* L/ W5 K: C; z
( G4 d- P' {( k- o% \8 `来源:http://www.jb51.net/article/216662.htm
/ x8 ?" H' I; w$ S9 e e6 _- {免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |
|