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;
}
复制代码