当前位置: 首页 > article >正文

spring boot 统一异常处理

在Spring Boot中,可以使用@ControllerAdvice注解创建一个全局异常处理类,来处理应用程序中发生的各种异常。以下是一个简单的例子:

import org.springframework.http.HttpStatus;

import org.springframework.web.bind.MethodArgumentNotValidException;

import org.springframework.web.bind.annotation.ControllerAdvice;

import org.springframework.web.bind.annotation.ExceptionHandler;

import org.springframework.web.bind.annotation.ResponseStatus;

import org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler;

@ControllerAdvice

public class GlobalExceptionHandler extends ResponseEntityExceptionHandler {

    @ExceptionHandler(Exception.class)

    @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)

    public String handleAllExceptions(Exception ex) {

        // 记录日志,处理其他逻辑

        return "An error occurred: " + ex.getMessage();

    }

    @Override

    protected ResponseEntity<Object> handleMethodArgumentNotValid(MethodArgumentNotValidException ex,

                                                                  HttpHeaders headers,

                                                                  HttpStatus status,

                                                                  WebRequest request) {

        // 记录日志,处理其他逻辑

        return new ResponseEntity<>("Validation failed: " + ex.getBindingResult().toString(), HttpStatus.BAD_REQUEST);

    }

    // 可以添加更多的异常处理方法

}

在这个例子中,我们定义了两个异常处理方法:

1.handleAllExceptions 处理所有类型的异常。

2.handleMethodArgumentNotValid 处理MethodArgumentNotValidException异常,这通常是由于@Valid注解验证失败触发的。

你可以根据需要添加更多的异常处理方法,以处理不同类型的异常。记得在方法上使用@ExceptionHandler注解来指定需要处理的异常类型,并使用@ResponseStatus注解来指定返回的HTTP状态码。


http://www.kler.cn/a/386331.html

相关文章:

  • Spring——事务
  • 【C++学习(37)】并发性模式:如生产者-消费者、读写锁等。 架构模式:如MVC、MVVM等。属于23 种设计模式吗? RAII 的关系?
  • Ceph 中PG与PGP的概述
  • 微澜:用 OceanBase 搭建基于知识图谱的实时资讯流的应用实践
  • Vue3.js - 一文看懂Vuex
  • Go语言 实现将中文转化为拼音
  • 大模型学习笔记------CLIP模型解读与思考
  • Redis-07 Redis哨兵
  • 2025斯诺克器材与用品展,2025郑州台球器材展会3月举办
  • 如何利用内部开源加速创新
  • SAP_MM负库存简介
  • 基于Spring Boot的网上商品订单转手系统设计与实现,LW+源码+讲解
  • Webserver(5.2)网页服务器框架
  • Chromium127编译指南 Linux篇 - 获取Chromium源码(四)
  • 【前端】Svelte:匿名插槽与具名插槽
  • 深度学习:BERT 详解
  • Flink API 的层次结构
  • 机器学习—神经网络如何高效实现
  • 数据采集器与物联网网关的区别
  • 基于Springboot+Vue的游乐园管理系统 (含源码数据库)
  • C#(asp.net)民宿客房管理系统-计算机设计毕业源码76233
  • SCI论文数据可视化的在线网址
  • udp丢包问题
  • 服务器数据恢复—EVA存储故障导致上层应用不可用的数据恢复案例
  • 基于大语言模型智能体的自主机器学习
  • 数据分析-38-时间序列分解之时变滤波器经验模态分解TVFEMD