第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定

【備戰(zhàn)春招】第6天 微信小程序電商實(shí)戰(zhàn)-異常處理

標(biāo)簽:
ThinkPHP

课程章节:AOP 与全局异常处理

课程讲师:7 七月

课程内容:

  1. 全局异常处理
  • 记录日志
  • 统一返回错误信息格式
  1. 什么时候使用异常
  • 用户行为异常(没有通过验证器,没有查询到结果):不记录日志、向用户返回具体信息
  • 服务器自身异常(代码错,调用外部接口错误):记录日志,不向客户端返回具体信息
  1. 在 application 目录下创建文件夹 lib/exception(异常处理层-类库)

Exception 基类

class BaseException
{
    // HTTP 状态码
    public $code = 400;

    // 错误具体信息
    public $msg = 'invalid parameters';

    // 自定义错误码
    public $errorCode = 999;

    public $shouldToClient = true;

    /**
     * 构造函数,接收一个关联数组
     * @param array $params 关联数组只应包含code、msg和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'];
        }
    }
}

Exception 子类

class BannerMissException extends BaseException
{
    public $code = 404;
    public $msg = '参数错误';
    public $errorCode = 40000;
}

Handle 异常处理类

class ExceptionHandler extends Handle
{
    private $code;
    private $msg;
    private $errorCode;

    public function render(Exception $ex)
    {
        if($e instanceof BaseException) {
            //如果是自定义异常,则控制http状态码,不需要记录日志
            //因为这些通常是因为客户端传递参数错误或者是用户请求造成的异常
            //不应当记录日志

            $this->code = $e->code;
            $this->msg = $e->msg;
            $this->errorCode = $e->errorCode;
        } else {
            // 如果是服务器未处理的异常,将http状态码设置为500,并记录日志
            if(config('app_debug')){
                // 调试状态下需要显示TP默认的异常页面,因为TP的默认页面
                // 很容易看出问题
                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);
    }
}

config.php 配置

exception_handle => 'app\lib\exception\ExceptionHandler'

ParameterException 通用参数类异常错误

class ParameterException extends BaseException
{
    public $code = 400;
    public $errorCode = 10000;
    public $msg = "invalid parameters";
}

图片描述

课程收获:

  1. 开发 api 和开发网页是截然不同的,特别是错误返回的处理
  2. 了解 render 机制
  3. 预习:调用异常类抛出信息,TP5 日志处理
點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評論
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊有機(jī)會得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號

舉報(bào)

0/150
提交
取消