Laravel——Exception 异常

Handler

public function render($request, Exception $exception)
{
    if ($exception instanceof ValidationException) {
            $message = $exception->validator->errors()->first();
            return response()->json([
                'code' => 1000,
                'message' => trans("trans.$message"),
            ], 422);
        }


        if ($exception instanceof BaseException) {
            return response()->json($exception->getResponseData(), $exception->getHttpCode());
        } else {
            if (config('app.debug')) {
                return parent::render($request, $exception);
            }

            return response()->json([
                'code' => 999,
                'message' => 'Server error'
            ], 500);
        }

        return parent::render($request, $exception);
    }
}
复制代码

BaseException 基类

class BaseException extends Exception
{
    /**
     * 1000 表单验证
     * 1001 权限验证
     * 2开头 数据库验证
     */
    public $default_code;
    public $default_message;
    public $default_httpCode;

    public function __construct($code = 0, $message = '', $httpCode = 0, Throwable $previous = null)
    {
        $this->default_code = $code == 0 ? $this->default_code : $code;
        $this->default_message = empty($message) ? trans("trans.$this->default_code") : $message;
        $this->default_httpCode = $httpCode == 0 ? $this->default_httpCode : $httpCode;

        parent::__construct($message, $code, $previous);
    }

    public function getResponseData()
    {
        return [
            'code' => $this->default_code,
            'message' => $this->default_message
        ];
    }

    public function getHttpCode()
    {
        return $this->default_httpCode;
    }
}
复制代码

DbException 具体异常处理类

class DbException extends BaseException
{
    /**
     * 2000 数据库操作异常
     * 2001 数据库插入失败
     * 2002 数据库更新失败
     * 2003 数据库删除失败
     */
    public $default_code = 2000;
    public $default_message = 'Database operation exception';
    public $default_httpCode = 500;
}
复制代码

转载于:https://juejin.im/post/5cab12165188254351723c57

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值