【全局异常处理记录】⭐️通过自定义全局处理器有效统一各种异常并记录

目录

前言

方案

示例

测试

总结

前言

        朋友们大家好啊,随着项目的进行,接口也是越来越多了,每个接口无论调用成功与否,都要有相应的应对措施,总不能出错的时候返回一堆异常信息给调用者,所以每个接口都应有完善的处理机制,但是随着接口的逐渐增多,异常的种类也在逐渐增多,这时候再去管理异常的时候,就比较繁琐了,所以迫切的需要一个全局处理器,统一管理一些常见的异常

方案

        因为用的是springBoot框架,正好借用提供的注解@ControllerAdvice和@ExceptionHandler实现自定义异常处理

@ControllerAdvice注解

        可以用于定义全局异常处理器,支持在一个类中几种处理所有的Controller层抛出的异常

@ExceptionHandler注解

        可以用于标记一个方法,标识该方法用于处理特定异常

示例

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;@ControllerAdvice
public class GlobalExceptionHandler {private static final Logger logger = LoggerFactory.getLogger(GlobalExceptionHandler.class);@ExceptionHandler(Exception.class)public ResponseEntity<String> handleGlobalException(Exception e){logger.error("Global Exception Handler:"+e.getMessage());return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Please try later.");}}

测试

        手动在接口上抛出一个普通异常,然后调用接口查询,可以看到断点处停了,并且携带了我们抛出的异常信息,并且接口的返回结果也是处理器中定义好的

 

总结

        这种处理机制是配合了Spring框架的AOP原理,@ControllerAdvice注解的底层原理大致是这样的,使用该注解标记的类在Spring启动的时候被扫描并注册为异常处理器,可以捕获程序中抛出的异常,Spring通过AOP代理机制,也就是说在方法执行前和执行后去执行相应的逻辑

@ExceptionHandler注解也是,抛出异常后,Spring会寻找相匹配的@ExceptionHandler方法(也就是我们在异常类中标注的方法),并且调用该方法来处理异常。

        文章到这里就结束了


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/504714.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自学软件测试怎么学?

软件测试是一个变得越来越受欢迎的行业&#xff0c;在IT行业里面&#xff0c;也是初学比较容易的。但对小白而言&#xff0c;怎样学习才能做到快速入门&#xff0c;少走弯路呢&#xff1f; 步骤一&#xff1a;初学学软件测试&#xff0c;要先搞懂这种问题 要想进入到软件测试…

现代化数据架构升级:毫末智行自动驾驶如何应对年增20PB的数据规模挑战?-OceanBase案例

毫末智行是一家致力于自动驾驶的人工智能技术公司&#xff0c;其前身是长城汽车智能驾驶前瞻分部&#xff0c;以零事故、零拥堵、自由出行和高效物流为目标&#xff0c;助力合作伙伴重塑和全面升级整个社会的出行及物流方式。 在自动驾驶领域中&#xff0c;是什么原因让毫末智行…

多层感知机 + 代码实现 - 动手学深度学习v2 | 李沐动手学深度学习课程笔记

感知机 感知机≈二分类问题 感知机和其他问题的对比 训练感知机 如果小于等于零&#xff0c;说明预测错啦 &#xff0c;其实就是同号为正&#xff0c;异号为负 举个分类的例子 增加样本&#xff0c;改变分类线 继续分类 感知机的收敛定理 XOR问题 XOR问题其实就是第1、3象限数…

基于springboot+vue的体育馆管理系统

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…

数据结构—数组

一、数据理论基础 数组是存放在连续内存空间上的相同类型数据的集合。 数组的下标都是从0开始数组内存空间的地址是连续的&#xff08;增删元素时&#xff0c;必须要移动其它元素的地址&#xff09;--> 数组元素是不能单独删除的&#xff0c;只能覆盖Java二维数组的存储方…

代码随想录算法训练营第二十八天|93.复原IP地址 、78.子集、90.子集II

文章目录 [1.复原 IP 地址](https://leetcode.cn/problems/restore-ip-addresses/description/)2.子集[3.子集 II](https://leetcode.cn/problems/subsets-ii/) 1.复原 IP 地址 切割问题可以使用回溯&#xff0c;本题分别两步&#xff0c;切割字符串和判断IP 切割逻辑如下&…

Python中学习调试requests模块时出现的大坑(1)

为防止迷路: 学习机械相关,请关注公众号:南大盛联 学习软件,硬件,请关注公众号号:一训微课 cmd模式下 不知道上面这行的话,需要补课。 pip install requests 这个不知道的话,也要补课 pip是python的安装工具。 install是安装的意思 requests是我们需要安装的模…

【InternLM 笔记】使用InternStudio 体验书生·浦语2-chat-1.8b随记

书生浦语2-chat-1.8b 介绍 书生浦语-1.8B (InternLM2-1.8B) 是第二代浦语模型系列的18亿参数版本。为了方便用户使用和研究&#xff0c;书生浦语-1.8B (InternLM2-1.8B) 共有三个版本的开源模型&#xff0c;他们分别是&#xff1a; InternLM2-1.8B: 具有高质量和高适应灵活性…

MSA-GCN

Combined Phenotypic Measure Selection and Weight Encoder(CSWE) AL: aggregation layer&#xff0c;final node representation h ( f i n a l ) h^{(final)} h(final) 作者未提供代码

MybatisPlus(SpringBoot版)的通用枚举和代码生成器、多数据源配置

目录 续前面 一、通用枚举 二、代码生成器 三、多数据源配置 一、通用枚举 定义枚举类&#xff1a; package com.qcby.SpringBoot.enums;import com.baomidou.mybatisplus.annotation.EnumValue; import lombok.Getter;Getter public enum SexEnum {MALE(1, "男"…

YOLO算法

YOLO介绍 YOLO&#xff0c;全称为You Only Look Once: Unified, Real-Time Object Detection&#xff0c;是一种实时目标检测算法。目标检测是计算机视觉领域的一个重要任务&#xff0c;它不仅需要识别图像中的物体类别&#xff0c;还需要确定它们的位置。与分类任务只关注对…

Centos6安装PyTorch要求的更高版本gcc

文章目录 CentOS自带版本安装gcc 4的版本1. 获取devtoolset-8的yum源2. 安装gcc3. 版本检查和切换版本 常见问题1. 找不到包audit*.rpm包2. 找不到libcgroup-0.40.rc1-27.el6_10.x86_64.rpm 的包4. cc: fatal error: Killed signal terminated program cc1plus5. pybind11/pybi…