全局异常配置
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()); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App