Spring MVC学习笔记(3)-自定义异常处理器

后端 Spring MVC 框架:异常处理器的定制化 在后端开发中,Spring MVC 是一个广泛使用的框架。然而,在应用程序运行过程中,不可避免地会出现各种异常。默认的异常处理机制可能无法满足复杂业务场景的需求,因此需要对异常处理器进行定制化。本文的目的是深入介绍如何在 Spring MVC 框架中进行异常处理器的定制化,范围涵盖了从核心概念到实际应用的各个方面,包括原理讲解、代码实现、应用场景分析等。本文将按照以下结构展开:首先介绍核心概念与联系,让读者对异常处理器有清晰的认识;接着阐述核心算法原理和具体操作步骤,并结合 Python 代码进行详细说明。 阅读详情

目录

一、异常处理思路

 二、自定义异常MyException

 三、自定义异常处理器CustomHandleException

四、日志记录log4j.properties

五、在springmvc.xml中注册异常处理器


系统在故障时,为了能够及时地通知到相关技术人员进行维护,我们通常需要在控制层定义一个异常处理器,当异常层层抛出到控制层时进行捕获。


一、异常处理思路

 二、自定义异常MyException

为了区别不同的异常,通常根据异常类型进行区分,这里我们创建一个自定义系统异常。

public class MyException extends Exception {
	// 异常信息
	private String message;

	public MyException() {
		super();
	}

	public MyException(String message) {
		super();
		this.message = message;
	}

	public String getMessage() {
		return message;
	}

	public void setMessage(String message) {
		this.message = message;
	}

}

 三、自定义异常处理器CustomHandleException

所有的异常发生时都会通过它,一个系统中只能有一个异常处理器。

public class GlobalExceptionResolver implements HandlerExceptionResolver {
    
        Logger logger = LoggerFactory.getLogger(CustomHandleException.class);
        
	@Override
	public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler,
			Exception exception) {
		// 定义异常信息
		String msg;

		// 判断异常类型
		if (exception instanceof MyException) {
			// 如果是自定义异常,读取异常信息
			msg = exception.getMessage();
		} else {
			// 如果是运行时异常,则取错误堆栈,从堆栈中获取异常信息
			Writer out = new StringWriter();
			PrintWriter s = new PrintWriter(out);
			exception.printStackTrace(s);
			msg = out.toString();

		}

		// 把错误信息发给相关人员,邮件,短信等方式
                //记录日志
                logger.error("系统发生异常", msg);
		// TODO

		// 返回错误页面,给用户友好页面显示错误信息
		ModelAndView modelAndView = new ModelAndView();
		modelAndView.addObject("msg", msg);
		modelAndView.setViewName("error");

		return modelAndView;
	}
}

四、日志记录log4j.properties

# Configure logging for testing: optionally with log file
log4j.rootLogger=debug, stdout,D,E
# log4j.rootLogger=WARN, stdout, logfile
 
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
 
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender  
log4j.appender.D.File = C://logs/GlobalException.log
log4j.appender.D.Append = true  
log4j.appender.D.Threshold = DEBUG   
log4j.appender.D.layout = org.apache.log4j.PatternLayout  
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n  
 
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender  
log4j.appender.E.File =C://logs/GlobalException.log   
log4j.appender.E.Append = true  
log4j.appender.E.Threshold = ERROR   
log4j.appender.E.layout = org.apache.log4j.PatternLayout  
log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

 

五、在springmvc.xml中注册异常处理器

<!-- 全局异常处理器 -->
    <bean class="com.iteason.search.exception.GlobalExceptionResolver"/>

 

springmvc配置统一异常处理器+自定义异常 创建统一返回的json对象 public class AjaxResponse{ /** *  */ private static final long serialVersionUID = 1L; private int code;  /** 状态对应的描述 **/ private String msg; /** 扩展字段 **/ private String 阅读详情

相关推荐

Springmvc自定义异常处理器实现流程解析

主要介绍了Springmvc自定义异常处理器实现流程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

SpringMVC自定义异常处理器

SpringMVC自定义异常处理器 项目结构 配置文件 pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:s...

xiao-啸 355

Linux内核同步原语之队列自旋锁(Queued Spin Lock)深度解析

本文深度解析了Linux内核中的队列自旋锁(Queued Spin Lock)机制。通过对比传统自旋锁的瓶颈,详细阐述了队列自旋锁如何利用紧凑的4字节结构、每CPU节点数组和pending位优化,有效解决多核(SMP)系统中的缓存行乒乓和惊群效应,实现公平、高效的锁等待队列,从而显著提升内核在高并发场景下的可扩展性与性能。

weixin_29205061的博客 306

SpringMVC 全局处理异常 使用HandlerExceptionResolver

一、创建一个类实现HandlerExceptionResolverpublic class ExceptionResolver implements HandlerExceptionResolver { @Override public ModelAndView resolveException(HttpServletRequest httpServletRequest, ...

qq_38553333的博客 647

大疆机场及无人机上云(航线规划、指令飞行...)

最近基于大疆上云api进行二次开发,后面将按照开发步骤对其进行说明!

资深三维GIS开发 5579

自动驾驶入门到进阶完整指南:感知、预测、规划、端到端、仿真测评与场景挖掘全解析

对小白来说,不建议一开始直接冲端到端大模型。先学数据和坐标系:否则所有结果都看不懂。再学 LiDAR 3D 检测:最容易建立空间感。再学 BEV/多相机感知:这是当前主流。再学轨迹预测:理解交互和多模态。再学规划控制:理解车为什么这样开。再学仿真和闭环评测:理解 open-loop 和 closed-loop 差异。最后学端到端/VLM/VLA:这时候你才知道它到底替代了哪些模块。贯穿始终学习场景挖掘和安全测评:这是工业界最核心的能力之一。

u013250861的博客 398

Spring MVC学习:配置异常处理器

基于XML文件方式配置 在springmvc.xml文件中配置 <!-- 配置异常处理器--> <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"> <property name="exceptionMappings"> <props> <prop ke

眼泪划过的星空 328

基于python的奥运会历史数据分析【120年】

数据分析实战案例

xff123456_的博客 3339

SpringMVC异常处理 自定义异常

实现HandlerExceptionResolver接口(异常处理器)

itzhuzhu的博客 654

基于STM32的智能垃圾分类机器人

垃圾分类是城市管理的重要环节,传统人工分拣效率低、成本高。本文设计了一款基于STM32的智能垃圾分类机器人,通过视觉识别与机械臂协同作业,实现垃圾自动分类与投放,适用于社区、公共场所等场景,可显著提升垃圾分类效率。:STM32H743(480MHz Cortex-M7,支持AI加速)本系统实现了垃圾分拣的自动化,显著提升了分类效率。OV5640摄像头(500万像素,支持JPEG输出)支持4类垃圾识别(可回收/厨余/有害/其他)问题讨论,stm32的资料领取可以私信!超声波避障(探测距离0.1-4m)

stm32d1219的博客 1821

CHNS数据库下载与使用指南:从申请到导入的全流程解析

面板数据是经济学与公共卫生实证研究的重要支撑。中国健康与营养调查(CHNS)自1989年持续追踪中国居民的家庭与个人健康、营养及经济行为,为研究者提供了跨度近三十年的纵向微观数据。理解CHNS的数据组织原理与申请机制,是高效利用该数据的前提。该数据广泛适用于健康经济学、膳食营养分析及公共政策评估等场景。围绕CHNS的下载流程,完整梳理了注册申请、数据文件解析以及Stata、R、Python三种工具的读取方法,并针对邮箱验证、文件损坏、ID匹配等常见问题提供排查建议,帮助研究者快速建立数据处理基础。

weixin_33624741的博客 287

【SpringMVC应用篇】SpringMVC自定义异常处理

Spring MVC自定义异常处理统一异常处理定义异常类对象controller中测试 @ControllerAdvice,是Spring3.2提供的新注解,它是一个Controller增强器,可对controller中被 @RequestMapping注解的方法加一些逻辑处理。最常用的就是异常处理 @ModelAttribute和@ExceptionHandler,前者可以往请求的Model里加数据,后者可以接受请求处理方法抛出的异常。但是他们放在控制器(Controller)里的时候,作用范围是有限的,

输入技术、输出想法 1522

USB之ch376s数据手册

         最近师兄交给我一个项目,虽说刚学嵌入式起步,但上手一个项目怎说都是最好的快速学习方式。因为刚了解ch376s管理U盘的数据,所以先是看了ch376s的数据手册。那我就把数据手册直接放上来吧。。。。      1、概述 CH376 是文件管理控制芯片,用于单片机系统读写 U 盘或者 SD 卡中的文件。 CH376 支持 USB 设备方式和 USB 主机方式,并且内置了 USB 通...

iBGG的博客 6007

Spring MVC异常处理【单个控制异常处理器、全局异常处理器、自定义异常处理器】

Spring MVC异常处理

qq_53317005的博客 3万+

电机驱动和电源等大电流设计中的并联 MOSFET设计

在电机驱动等应用中,半桥拓扑(通常为 3 相)用于生成在电机中产生正扭矩或负扭矩的交流电源信号。想要更高的输出电流能力,只有通过并联形成每个功能开关的 MOSFET,才能实现高输出电流。当多个功率 MOSFET 并联以增加系统整体电流能力容量时,通常假设电流在并联器件之间均等分配或均等共享。然而,在并联 MOSFET 时,需要考虑并联器件之间的电流分配。PCB 布局的若干特性和特定的MOSFET 参数会影响这种分配,并在参数不匹配或布局不对称时导致均流不平衡。

小幽余生不加糖 2488

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Spring Boot 自定义异常及Spring MVC处理异常流程

Overridethrow new ForbiddenOperationException("信息不存在");//业务代码未受检异常:RuntimeException及其子类属于未受检异常,这意味着它们在编译时不需要被显式捕获或声明抛出。这减少了代码的冗余,使得开发者可以更加专注于业务逻辑的实现。事务管理:在Spring框架等事务管理环境中,默认情况下只有未捕获的RuntimeException会触发事务回滚。

qq_75166530的博客 1496

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Spring MVC 中的异常处理器

Spring MVC 在处理器方法执行过程中出现了异常,可以采用异常处理器进行应对。一句话概括异常处理器作用:处理器方法执行过程中出现了异常,跳转都对应的视图,在视图上展示友好信息。Spring MVC 为异常处理提供了一个接口:HandlerExceptionResolver核心方法是:resolveException。该方法用来编写具体的异常处理方案。返回值ModelAndView,表示异常处理完之后跳转到哪个视图。

weixin_61635597的博客 1747

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Spring MVC 之 异常处理

Spring MVC内部提供了HandlerExceptionResolver的实现类SimpleMappingExceptionResolver。它实现了简单的异常处理,通过该实现类可以将不同类型的异常映射到不同的页面,当发生异常的时候,实现类根据发生的异常类型跳转到指定的页面处理异常信息。实现类也可以为所有的异常指定一个默认的异常处理页面,当应用程序抛出的异常没有对应的映射页面,则使用默认页面处理异常信息。

冷心笑看丽美人 ~ blog 1189

Spring MVC中异常处理

前后端分离(REST 风格)用全局异常处理器统一返回结构化 JSON由前端(如 Vue、React)判断 status 或 code,显示漂亮的提示页面。

iov_a的博客 1610

spring MVC 异常处理器

1、简述&环境搭建 异常处理器: 实现了HandlerExceptionResolver接口 作用:用来处理springMVC中 控制器出现的异常 一般一个项目有一个异常处理器 Demo1Resolver @Component public class Demo1Resolver implements HandlerExceptionResolver{ /* * 处理异常 ...

luoxi_xi的博客 214

spring mvc配置异常处理器

异常处理流程: 思想:异常 捕获异常 跳转到正常界面告诉用户发生异常 1、自定义异常: package exception; //自定义异常类 public class SYSException extends Exception{ private String message; public String getMessage() {//get能访问 return message; } public void setMessage(String message) {//set能更改

weixin_45247356的博客 260

Spring_MVC异常处理器(七)

Spring_MVC异常处理器

hello world 2277
上一篇: Kafka架构组成及基础概念
下一篇: Kafka核心操作总结
BoringRong
BoringRong 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄9年 2万+粉丝 386原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BoringRong

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值