modifyException($throwable); // 传递给基类处理 return $this->handlerResponse($throwable, $response); } return $response; } /** * @param JWTException $e * @return ErrException */ protected function modifyException(JWTException $e): ErrException { // 根据不同的异常类型设置不同的code和message switch ($e->getMessage()) { case 'The token is expired': $code = ResultCode::JWT_EXPIRED; $message = 'token已过期'; break; default: $code = ResultCode::JWT_ERROR; $message = 'token错误'; } if (method_exists($e, 'setCustomCode')) { $e->setCustomCode($code); } if (method_exists($e, 'setCustomMessage')) { $e->setCustomMessage($message); } return New ErrException($message,$code); } /** * @param Throwable $throwable * @return bool */ public function isValid(Throwable $throwable): bool { return $throwable instanceof JWTException; } }