一、异常处理开关配置
1. application.yml配置文件中新增配置
spring:
errors:
controller: true
attributes: true
controller-advice: true
二、定义异常类
1. NonExistingUserException.java
package com.zsx.exception;
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class NonExistingUserException extends RuntimeException {
public NonExistingUserException() {
super();
}
public NonExistingUserException(String message) {
super(message);
log.info("=========NonExistingUserException.NonExistingUserException()=========");
log.error(String.format("%s: %s", NonExistingUserException.class.getName(), message));
}
public NonExistingUserException(String message, Throwable cause) {
super(message, cause);
}
public NonExistingUserException(Throwable cause) {
super(cause);
}
protected NonExistingUserException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
super(message, cause, enableSuppression, writableStackTrace);
}
}
三、定义全局异常处理器
1. GlobalExceptionHandler.java
package com.zsx.exception;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order;
import org.springframework.http.ResponseEntity;
import org.springframework.web.HttpRequestMethodNotSupportedException;
import org.springframework.web.bind.MissingRequestHeaderException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import org.springframework.web.method.annotation.MethodArgumentTypeMismatchException;
import org.springframework.web.multipart.MaxUploadSizeExceededException;
import javax.servlet.http.HttpServletRequest;
import java.util.Optional;
@Slf4j
@RestControllerAdvice
@Order(Ordered.HIGHEST_PRECEDENCE)
@ConditionalOnProperty(name = "spring.errors.controller-advice", havingValue = "true")
public class GlobalExceptionHandler {
@ExceptionHandler(NonExistingUserException.class)
public ResponseEntity<Object> nonExistingUserException1(NonExistingUserException ex, HttpServletRequest request) {
log.info("=========GlobalExceptionHandler.nonExistingUserException()=========");
return ResponseEntity.of(Optional.of(ex));
}
@ExceptionHandler(MethodArgumentTypeMismatchException.class)
public ResponseEntity<MethodArgumentTypeMismatchException> methodArgumentTypeMismatchException(MethodArgumentTypeMismatchException e) {
log.info("=========GlobalExceptionHandler.methodArgumentTypeMismatchException()=========");
return ResponseEntity.of(Opti