springboot 全局异常处理

Java后端学习日记(五):Springboot使用@ControllerAdvice捕获和处理异常 专栏目录 Java后端学习日记(一):第一个Springboot应用——Hello World! Java后端学习日记(二):POJO的基本概念,编写,转化和简化 Java后端学习日记(三):Springboot整合Mybatis-Plus Java后端学习日记(四):Springboot 2.X 整合Redis作为数据缓存 项目源码同步更新中 前言 作为后端,需要捕获和处理各式各样的异常,比如接口调用方传来了奇葩参数让后端出现异常了,或者说后端的代码逻辑出现错误了,等等。异常的捕获和处理在对前端,对用户 阅读详情

使用ControllerAdvice 和 ExceptionHandler进行全局异常处理

ControllerAdvice只对Controller层抛出的异常进行处理, 如果Service层抛出了异常,不被try-catch,直接向上抛出的会到Contrller层,进而被捕获。

如果Controller层try-catch了异常,那么不会被统一异常拦截处理。

代码如下:


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

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

/**
 * 开发阶段抛出的异常要改正
 * 发布之后产生的异常不做处理,但是要写入日志,方便后续调试改正
 */
@ControllerAdvice
public class ExceptionController {

    @ExceptionHandler(value = Exception.class)
    public void getException(HttpServletRequest request , HttpServletResponse response ,Exception e)
    {
        //记录异常日志 记录:url 当前线程用户  时间  异常类  参数等等

        //发送短信,邮件给管理员

        //设置响应内容 状态码设置成500 message设置成合理提示信息

    }
}

 

springboot+全局异常处理 如果采用这种方式,虽然可以解决,但是存在弊端,需要我们在保存其他业务数据时,也需要在其他方法中加上try…异常的传播:异常的目的是传递错误信息,如果每个地方都捕获并处理异常,可能会隐藏错误的根本原因,使得问题难以被发现和解决。这个地方我们就可以发现实际上就是自动的帮我们做了异常处理了,当然我给的这个实例只是针对于全部的异常而不是自定义的异常。代码可读性:业务逻辑代码中混入大量的异常处理代码会降低代码的可读性,使得主要业务逻辑变得难以理解和维护。这些类可以捕获和处理应用程序中的异常,并返回统一的错误响应。 阅读详情

相关推荐

逆向解析M团外卖mtgsig与waimai_sign加密参数实战指南⊙ω⊙

本文详细解析了M团外卖App中mtgsig与waimai_sign两个核心加密参数的逆向分析与生成方法。通过抓包定位、静态逆向与Frida动态调试,拆解了waimai_sign的RSA签名逻辑与mtgsig的复杂参数组装加密流程,并提供了Python模拟实现的框架与调试心得,为安全研究及合规数据分析提供实战指南。

weixin_29327525的博客 1280

springboot系列五:@RestControllerAdvice注解实现全局异常处理

RestControllerAdvice实现全局异常处理

乐子 2146

kepserverEX6创建tcpserver接入自有协议(使用ucon接入)

kepserverEX6创建tcpserver接入自有协议

qq_38388813的博客 1631

springboot中使用@RestControllerAdvice注解,完成优雅的全局异常处理类

springboot中使用@RestControllerAdvice注解,完成优雅的全局异常处理类,可以进行通用处理再按特定异常进行特定处理

m0_54250110的博客 3793

Power BI----各类切片器的使用

首先介绍切片器的最基础的创建和效果演示,紧跟着介绍切片器在多页中的同步和本身与报表的联动,再然后介绍关于切片器属性的设置,使得交互更加美观,最后介绍几种很好看的第三方的切片器样式和自己构建的可折叠的切片器.........

Itsme_MrJJ的博客 2万+

Oracle数据库安装及配置(Oracle19c)

Windows 10安装Oracle 19c教程

weixin_69200200的博客 2万+

springboot全局异常处理

原文链接:https://www.cnblogs.com/xuwujing/p/10933082.html SpringBoot的项目已经对有一定的异常处理了,但是对于我们开发者而言可能就不太合适了,因此我们需要对这些异常进行统一的捕获并处理。SpringBoot中有一个ControllerAdvice的注解,使用该注解表示开启了全局异常的捕获,我们只需在自定义一个方法使用ExceptionHan...

woshicaoxiaojia的博客 410

python提取图片中的文字写入excel文件,并打包为exe可执行文件

python提取图片中的文字写入excel文件,并打包为exe可执行文件

liqiang12689的博客 989

@ExceptionHandler处理全局异常的优先级说明

在工作中,遇到使用@RestControllerAdvice与@ExceptionHandler注解进行全局异常错误处理(之前写过文章即设置了全局异常处理方法,又设置了controller层异常处理的方法,优先选择自己的controller层。而在这次工作中,遇到了:在不同包下都设置了全局异常处理的方法,而并不是按照错误类型越精确就使用谁的方法进行处理,因此,特意研究一下,并记录下来。

搏·梦的博客 6711

4.4 线上vs离线:使用 Langfuse 实现智能体的全方位无死角评估

本文介绍了如何利用Langfuse工具实现AI智能体的全方位评估,包括线上和离线两种评估方式。线上评估通过收集用户实时反馈(如点赞/点踩)来监控真实表现,而离线评估则通过创建标准化数据集进行批量测试和自动评分。文章详细演示了如何为"旅小智"AI应用添加反馈功能、创建评估数据集,并利用Langfuse SDK进行自动化评估和分析。通过这两种评估方式的结合,开发者可以建立数据驱动的AI质量保障体系,实现持续优化和版本迭代。

yonggeit的博客 3310

2024顶级提示工程工具:提升效率的12个神器

LlamaIndex虽然本身不是直接的提示词编辑工具,但其整个设计都围绕着如何有效地将外部知识融入LLM的提示词。它提供了结构化的方式来管理“上下文窗口”——即哪些私有数据应该被包含在提示词中。通过优化索引结构和检索策略,可以确保提示词中包含最相关、最高质量的上下文信息,从而大幅提升LLM基于私有数据回答问题的准确性和相关性。同时,LlamaIndex允许开发者针对不同的查询类型和数据特点定制提示词模板,这使得提示词的复用和优化更加系统化。

AIGC应用创新大全的博客 1098

SpringBoot全局异常处理

SpringBoot全局异常处理

骑个小蜗牛的博客 4万+

计算机网络基础:认识网络硬件与传输介质

计算机网络基础:认识网络硬件与传输介质,在计算机网络的庞大体系中,网络硬件与传输介质犹如坚实的骨架与脉络,支撑并承载着信息的流动。从家庭中的小型网络,到企业复杂的办公网络,再到覆盖全球的互联网,各类网络硬件设备各司其职,不同的传输介质发挥着独特的传输作用。它们相互协作,使得数据能够在不同设备之间快速、准确地传输,为人们的日常沟通、工作办公、娱乐休闲等活动提供了基础保障。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 3万+

SpringBoot全局异常处理 | Java

全局异常指的是在程序运行过程中发生的非预期异常,这些异常可能会导致程序崩溃或出现错误结果。全局异常处理机制可以捕获这些异常并进行相应的处理,如记录日志、提示用户等,从而提高程序的可靠性和稳定性。

小知识吖 1万+

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SpringBoot——全局异常处理

SpringBoot提供了两个注解用于拦截异常 1、@ControllerAdvice:标注该类为全局异常处理类,默认拦截所有被触发的异常 2、@ExceptionHandler:标注方法,用于处理特定异常

生命的痕迹 4792

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

springboot全局异常处理_Spring Boot 中的全局异常处理

阅读本文约需要5分钟大家好,我是你们的导师,我每天都会在这里给大家分享一些干货内容(当然了,周末也要允许老师休息一下哈)。上次老师跟大家分享了Spring Boot 集成 Thymeleaf 模板引擎。今天给大家分享下Spring Boot 中的全局异常处理。在项目开发过程中,不管是对底层数据库的操作过程,还是业务层的处理过程,还是控制层的处理过程,都不可避免会遇到各种可预知的、不可预知...

weixin_39908070的博客 309

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Spring Boot中全局异常处理器

在项目中自定义一个全局异常处理器,在异常处理器上加上注解 @ControllerAdvice,可以通过属性annotations指定拦截哪一类的Controller方法。并在异常处理器的方法上加上注解 @ExceptionHandler 来指定拦截的是那一类型的异常。注解提供了一种在控制器中处理异常的机制,能够根据不同类型的异常来执行不同的异常处理逻辑,使代码更加清晰和易于维护。采用这种方式来实现,我们只需要在项目中定义一个通用的全局异常处理器,就可以解决本项目的所有异常。: 指定拦截那些类型的控制器;

m0_74212228的博客 5034

Spring Boot 全局异常处理

说到异常处理,我们都知道使用 try-catch 可以捕捉异常,可以 throws 抛出异常。那么在 Spring Boot 中我们如何处理异常,如何是的处理更加优雅,如何全局处理异常。是本章讨论解决的问题。 首先让我们简单了解或重新学习下 Java 的异常机制。 本项目源码下载 1 Java 异常机制概述 Spring Boot 的所有异常处理都基于 java 的。 1.1 Java 异常类图 ...

fishpro的博客 1422

Springboot 全局异常处理

关注微信公众号【Java之言】,更多干货文章和学习资料,助你放弃编程之路! 文章目录一、为何要处理全局异常?二、开发环境三、添加依赖四、自定义异常错误类4.1 自定义异常基础接口类4.2 通用异常信息枚举类4.3 业务异常信息枚举类4.4 自定义业务异常类五、接口返回统一格式六、全局异常处理七、测试7.1 辅助类7.2 测试结果 一、为何要处理全局异常? 在平常项目开发过程中,程序难免会出现运行时异常,或者业务异常。难道要针对每一处可能出现的异常进行编写代码进行处理?或者直接不处理异常,将一大屏堆.

陈皮的JavaLib 4961

springboot全局异常处理详解

springboot、异常处理、注解@ExceptionHandler、注解@RestControllerAdvice

记录开发日常笔记 1万+

springboot全局异常处理_012 Spring Boot 全局异常处理

在项目开发过程中,不管是对底层数据库的操作过程,还是业务层的处理过程,还是控制层的处理过程,都不可避免会遇到各种可预知的、不可预知的异常需要处理。如果对每个过程都单独作异常处理,那系统的代码耦合度会变得很高,此外,开发工作量也会加大而且不好统一,这也增加了代码的维护成本。针对这种实际情况,我们需要将所有类型的异常处理从各处理过程解耦出来,这样既保证了相关处理过程的功能单一,也实现了异常信息的统一处...

weixin_39572288的博客 101

SpringBoot 如何进行全局异常处理

在下面的例子中,我们继承了ResponseEntityExceptionHandler并使用@RestControllerAdvice注解了这个类,接着结合@ExceptionHandler针对不同的异常类型,来定义不同的异常处理方法。这里可以看到我处理的异常是自定义异常,后续我会展开介绍。ResponseEntityExceptionHandler中包装了各种SpringMVC在处理请求时可能抛出的异常的处理,处理结果都是封装成一个ResponseEntity对象。

houxian1103的博客 2452

SpringBoot全局异常处理详解

全局异常处理器可以通过注解来创建,它会捕获整个应用中抛出的异常。// 日志记录异常信息logger.error("发生异常:", e);// 根据异常类型返回不同的错误信息return ResultBody.error("算术异常,请联系管理员");} else {return ResultBody.error("未知异常,请联系管理员");在这个例子中,方法会捕获所有的异常,并返回一个统一的错误响应体ResultBody。为了更优雅地处理业务逻辑中的异常,我们可以定义自己的异常类。

ning的博客 2107
上一篇: mybatis-pluse快速使用 springboot
下一篇: 模板导入导出 excel
libingbojava
博客等级 码龄9年 64粉丝 111原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值