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;
}
複製代碼
相關文章
相關標籤/搜索