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;
}
複製代碼