全局异常配置
xml:
<!-- validation验证 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> </dependency>
全局异常处理类:
@RestControllerAdvice + @ExceptionHandler 实现异常的处理
package com.vacc.operate.handler.exception; import com.vacc.operate.common.ResultStatus; import com.vacc.operate.common.result.AjaxResult; import lombok.extern.slf4j.Slf4j; import org.hibernate.validator.internal.engine.ConstraintViolationImpl; import org.springframework.http.HttpStatus; import org.springframework.validation.BindException; import org.springframework.web.bind.MethodArgumentNotValidException; import org.springframework.web.bind.MissingServletRequestParameterException; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.bind.annotation.RestControllerAdvice; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.validation.ConstraintViolation; import javax.validation.ConstraintViolationException; import java.util.Iterator; import java.util.Objects; /** * 全局异常处理 * * @author yjx * @version 1.0.0 * @date 2023/2/7 17:27 */ @Slf4j @RestControllerAdvice public class MyGlobalExceptionHandler { @ExceptionHandler(BindException.class) @ResponseStatus(HttpStatus.OK) public AjaxResult bindException(HttpServletRequest request, HttpServletResponse response, BindException exception) { return AjaxResult.error(ResultStatus.BAD_REQUEST.getCode(), Objects.requireNonNull(exception.getBindingResult().getFieldError()).getDefaultMessage()); } @ExceptionHandler(MethodArgumentNotValidException.class) @ResponseStatus(HttpStatus.BAD_REQUEST) public AjaxResult methodArgumentNotValidException(HttpServletRequest request, HttpServletResponse response, MethodArgumentNotValidException exception) { return AjaxResult.error(Objects.requireNonNull(exception.getBindingResult().getFieldError()).getDefaultMessage()); } @ExceptionHandler(MissingServletRequestParameterException.class) @ResponseStatus(HttpStatus.BAD_REQUEST) public AjaxResult methodArgumentNotValidException(HttpServletRequest request, HttpServletResponse response, MissingServletRequestParameterException exception) { String parameterName = exception.getParameterName(); return AjaxResult.error(ResultStatus.BAD_REQUEST.getCode(), "请求参数 " + parameterName + " 缺失!"); } @ExceptionHandler(ConstraintViolationException.class) @ResponseStatus(HttpStatus.OK) public AjaxResult methodArgumentNotValidException(HttpServletRequest request, HttpServletResponse response, ConstraintViolationException exception) { System.out.println(exception.getLocalizedMessage()); Iterator<ConstraintViolation<?>> iterator = exception.getConstraintViolations().iterator(); if (iterator.hasNext()) { ConstraintViolationImpl next = (ConstraintViolationImpl) iterator.next(); return AjaxResult.error(next.getMessage()); } return AjaxResult.error(exception.getMessage()); } @ExceptionHandler(NullPointerException.class) @ResponseStatus(HttpStatus.OK) public AjaxResult nullPointerException(HttpServletRequest request, HttpServletResponse response, Exception exception) { return AjaxResult.error("系统运行存在时存在空指针异常"); } @ExceptionHandler(Exception.class) @ResponseStatus(HttpStatus.OK) public AjaxResult exception(HttpServletRequest request, HttpServletResponse response, Exception exception) { return AjaxResult.error(exception.getMessage()); } }

浙公网安备 33010602011771号