zoukankan      html  css  js  c++  java
  • TP6.0 自定义异常处理类

    1. 拷贝框架自带的 应用异常处理类, 另存一份


    复制 app/ExceptionHandle.php, 另存为 app/ApiExceptionHandle.php

    ApiExceptionHandle.php 中的 render() 方法中 自定义异常处理机制

    public function render($request, Throwable $e): Response
    {
        // 添加自定义异常处理机制
        if ( $e instanceof HttpException ) {
            return $this->json($e->getMessage(), $e->getStatusCode());
        }
        if ( !empty($e->getMessage()) ) {
            return $this->json($e->getMessage(), $e->getCode());
        }
        // 其他错误交给系统处理
        return parent::render($request, $e);
    }
    
    /**
     * 返回json数据
     *
     * @param string $msg   描述信息
     * @param integer $code 状态码
     */
    private function json(string $msg, int $code)
    {
        return json(compact('code', 'msg'));
    }
    

    自定义异常类可放在全局容器Provider定义文件, 也可放在应用目录下

    全局容器Provider定义文件: app/provider.php

    应用容器Provider定义文件: app/index/provider.php

    <?php
    
    // 容器Provider定义文件
    
    return [
        // 自定义异常处理
        'thinkexceptionHandle' => liang	p6ApiExceptionHandle::class,
    ];
    

    2. 自定义抛出异常的函数


    /**
     * 操作成功
     *
     * @param string  $msg
     * @param integer $code
     */
    function msg(string $msg = "", int $code = 0)
    {
        throw new Exception($msg, $code);
    }
    
    /**
     * 返回错误信息
     *
     * @param string  $msg
     * @param integer $code
     */
    function fault(string $msg = "", int $code = 1)
    {
        throw new Exception($msg, $code);
    }
    

    3. 该自定义异常类已内置于适用于TP6.0的个人开发工具包


    composer require shinyboys/tp6.0
    
  • 相关阅读:
    Redis到底该如何利用?
    AutoMapper搬运工之自定义类型转换
    AutoMapper搬运工之初探AutoMapper
    【ELK】docker-compose搭建ELK单机环境
    [flowable工作流引擎]基本概念及术语
    shell遍历文件夹读取文件夹下的文件
    vector类的简单实现
    string类的实现
    接口安全认证
    C# lock private VS private static
  • 原文地址:https://www.cnblogs.com/cfmy/p/14720385.html
Copyright © 2011-2022 走看看