Loading

Laravel自定义错误提示,自定义异常类提示,自定义错误返回信息,自定义错误页面

方法一

新增CustomException.php文件

App\Exceptions\CustomException.php

<?php

namespace App\Exceptions;

use Exception;
/**
 * 王召波自定义异常基类
 * Class BaseException
 * @package App\Exceptions
 */
class CustomException extends Exception
{
    /**
     * 状态码
     * @var int|mixed
     */
    public $code = 200;

    /**
     * 错误具体信息
     * @var mixed|string
     */
    public $message = 'json';

    /**
     * 构造函数,接收关联数组
     * BaseException constructor.
     * @param array $params
     */
    public function __construct($params = [])
    {
        parent::__construct();
        if (!is_array($params)) {
            return ;
        }
        if (array_key_exists('code', $params)) {
            $this->code = $params['code'];
        }
        if (array_key_exists('msg', $params)) {
            $this->message = $params['msg'];
        }
    }

    public function report()
    {
        //
    }
    public function render($request)
    {
        $result = [
            'code'  => $this->code,
            'msg'   => $this->message,
        ];
        //记录日志
//        Log::error($this->message);
        if($request->ajax()){
            return response()->json($result)->setEncodingOptions(JSON_UNESCAPED_UNICODE);
        }else{
            $params = [
                'msg'  => $this->message,
                'wait' => 3,
                'url'  => 'javascript:history.back(-1);',
            ];
            return response()->view('common.error', $params, 500);
        }
    }
}

方法二

1.新增CustomException.php文件

App\Exceptions\CustomException.php

<?php

namespace App\Exceptions;

/**
 * 王召波自定义异常基类
 * Class BaseException
 * @package App\Exceptions\Custom
 */
class CustomException extends \Exception
{
    /**
     * 状态码
     * @var int|mixed
     */
    public $code = 200;

    /**
     * 错误具体信息
     * @var mixed|string
     */
    public $message = 'json';

    /**
     * 构造函数,接收关联数组
     * BaseException constructor.
     * @param array $params
     */
    public function __construct($params = [])
    {
        parent::__construct();
        if (!is_array($params)) {
            return ;
        }
        if (array_key_exists('code', $params)) {
            $this->code = $params['code'];
        }
        if (array_key_exists('msg', $params)) {
            $this->message = $params['msg'];
        }
    }


}

2.修改render()方法

App\Exceptions\Handler.php

public function render($request, Exception $exception)
    {
        if ($exception instanceof CustomException) {
            // 如果是自定义的异常
            $this->code    = $exception->code;
            $this->message = $exception->message;
            $result = [
                'code'  => $this->code,
                'msg'   => $this->message,
            ];
            //记录日期
            Log::error($exception->message);
            if($request->ajax()){
                return response()->json($result)->setEncodingOptions(JSON_UNESCAPED_UNICODE);
            }else{
                $params = [
                    'msg'  => $this->message,
                    'wait' => 3,
                    'url'  => 'javascript:history.back(-1);',
                ];
                return response()->view('common.error', $params, 500);
            }
        }
        
        return parent::render($request, $exception);
    }

测试

throw  new \App\Exceptions\CustomException(['msg'=>'王召波自定义错误','code'=>400]);
posted @ 2021-02-23 18:15  王召波  阅读(1228)  评论(0编辑  收藏  举报