tp5 API 自定义全局异常处理

32 篇文章 0 订阅

1.在模块同级目录下新建lib/exception

2.在lib/exception目录下新建ExceptionHandler.php

<?php 
namespace app\lib\exception;
use Exception;
use think\exception\Handle;

class ExceptionHandler extends Handle {
	private $code;
	private $msg;
	private $error_code;
	public function render(Exception $e)
	{
	    if ($e instanceof BaseException) {
			$this->code = $e->code;
			$this->msg = $e->msg;
			$this->error_code = $e->error_code;
		} else {
			if(config('app_debug')){
				return parent::render($e);
			}
			$this->code = 500;
			$this->msg = '服务器内部异常';
			$this->error_code = 999;
		}
		$request = request();
		$result = [
			'msg' => $this->msg,
			'error_code' => $this->error_code,
			'request_url' => $request->url()
		];
		return json($result, $this->code);
		Log::record($e->getMessage(),'error');
	}
}

3.在lib/exception目录下新建BaseException.php

<?php

namespace app\lib\exception;

use Exception;

class BaseException extends Exception
{
    public $code = 400; // HTTP 状态码 404,200...
    public $msg = '参数错误';  // 错误信息具体
    public $error_code = 10000;  // 自定义错误码

	public function __construct($params = [])
	{
	    if (!is_array($params)) {
	            return;  // 如果没有传入数组,那么就是使用默认的 code、msg 和 errorCode
	     }
	    if (array_key_exists('code', $params)) {
	          $this->code = $params['code'];
	     }
	    if (array_key_exists('msg', $params)) {
	        $this->msg = $params['msg'];
	     }
	    if (array_key_exists('error_code', $params)) {
	        $this->error_code = $params['error_code'];
	     }
	}
}

4.修改配置文件application/config.php
并且重新指定 tp5.1 的全局异常处理类:
在 config.php 文件中的 'exception_handle’字段输入我们自定义的处理器的命名空间:
app\lib\exception\ExceptionHandler

'exception_handle'       => '\app\lib\exception\ExceptionHandler',      //163行

5.实现记录日志错误信息:
在config目录下,找到Log.php,开启一下配置信息:

'log'                    => [
        // 日志记录方式,内置 file socket 支持扩展
        'type'  => 'File',
        // 日志保存目录
        'path'  => LOG_PATH,
        // 日志记录级别
        'level' => ['error'],    //175行
    ],

打包文件下载https://download.csdn.net/download/weixin_44432032/15892279

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

原克技术

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值