springmvc处理异常的4种方式

springmvc处理异常有三种方式:

1.在一个controller中定义一个方法,用@ExceptionHandler注解标注。( 优先级最高)

@ExceptionHandler
public ModelAndView handleException(Exception exception){
    ModelAndView mv = new ModelAndView("error/500");
    mv.addObject("ex",exception);
    return mv;
}

或者

@ExceptionHandler
public String handleException(Exception exception){
    return "error/500";
}

2.全局异常设置( 优先级次之 )

<!-- 将Controller抛出的异常转到特定View,异常映射处理器 -->
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<!-- 定义异常处理页面用来获取异常信息的变量名,默认名为exception -->
<!--<property name="exceptionAttribute" value="ex"></property>-->
<property name="exceptionMappings">
<props>
<prop key="java.lang.Throwable">error/500</prop>
</props>
</property>
</bean>

3.自定义异常处理( 优先级次之 )

public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
System.out.println("自定义异常处理器");
logger = LoggerFactory.getLogger(ex.getClass());
ResponseStatus responseStatus = AnnotationUtils.getAnnotation(ex.getClass(), ResponseStatus.class);
ModelAndView modelAndView = new ModelAndView("error/500");
//自定义的异常
if (responseStatus != null) {
modelAndView.setViewName("error/" + responseStatus.value().value());
} else {
//其他异常,做一些其他的处理,如发送错误报警邮件,记录日志
logger.error(ex.getMessage(), ex);
}
return modelAndView;
}

4.自定义一个异常类,继承RunTimeException( 优先级最低 )

@ResponseStatus(value = HttpStatus.NOT_FOUND,reason = "No such resource")
public class NotFoundException extends RuntimeException {

}

当抛出我们自定义的异常时,就会构造出相应的状态码,一般我们还是设置SimpleMappingExceptionResolver,来进行统一跳转到错误页面。

最佳实践:还是用全局的SimpleMappingExceptionResolver最好,在jsp里面写日志,当需要进行细粒度的控制时,还是自定义异常解析器为好,其他的自我感觉不好用!如有不正确的,欢迎指正!

从零构建法律案例数据库:Python爬虫实战与法律文本挖掘全攻略 在当今数字化浪潮席卷全球的背景下,法律行业正经历着前所未有的变革。法律案例数据库作为法律大数据的重要组成部分,已经成为法律从业者、研究人员、法学院学生乃至企业法务部门的必备工具。然而,商业法律数据库如北大法宝、威科先行、LexisNexis等往往价格不菲,且数据访问受限。对于个人研究者或小型机构而言,构建一个定制化的法律案例数据库不仅能节省成本,更能根据特定研究需求灵活调整数据结构。 阅读详情

相关推荐

MIC卡的OFED驱动安装

 IB网络和OFED驱动安装 IB InfiniBand是一个统一的互联结构,可以处理存储I/O、网络I/O和进程间通信(IPC)。它可以将磁盘阵列、SANs、LANs、服务器和集群服务器进行互联,也可以连接外部网络(比如WAN、VPN、互联网)。设计InfiniBand的目的主要是用于企业数据中心,大型的或小型的。目标主要是实现高的可靠性、可用性、可扩展性和高的性能。Inf

beglorious的专栏 5106

SpringMVC异常处理三种方式

SpringMVC异常处理三种方式1. 自定义HandlerExceptionResolver2. 使用SpringMVC自带的异常处理器处理异常2.1 @ExceptionHandler的用法3. 写一个异常类用ControllerAdvice作为全局异常处理类4. 优先级 SpringMVC对异常的处理有三大类 自定义HandlerExceptionResolver 在controller类用@ExceptionHandler 写一个异常处理方法 写一个异常处理类用@ControllerAdvice作

Yolyn‘s blog 413

XGBoost的简单安装及入门使用

XGBoost安装及简单入门 XGBoost支持多种操作系统,如Windows, Linux, MacOS等,并支持多种语言版本,如Python, R, Scale, Java等。XGBoost的安装方式一般有两种,一种是直接通过pip安装(适合用于Python),另外一种是通过源码编译安装 1、通过pip安装 通过pip安装Python包既简单又方便,只需执行如下的命令: pip install -i https://pypi.tuna.tsinghua.edu.cn/simple xgboost 使用

qq_41513230的博客 3万+

SpringMVC异常处理流程总结

通过@ControllerAdvice+@Exception的方式便可以指定在请求处理的整个流程中如果出现了@ExceptionHandler注解中指定的这些异常,便可以通过该@ExceptionHandler所标注的方法来处理该类异常,该类中的方法同常规的Controller中的方法一致,如果返回String便会找到相对应的页面进行渲染,如果类上标注了@RestControllerAdvice返回类型为String则会返回JSON字符串。 (2)原理分析 SpringM

koutaoran4812的博客 1891

深入解析:如何基于开源p-net快速开发Profinet从站服务

开源p-net协议栈为工业设备开发者打开了通往Profinet世界的大门。随着工业互联网的发展,软协议栈方案将在边缘计算领域展现更大潜力。该文章完整实现了PROFINET从站的核心功能,可直接作为产品开发的基础框架。实际部署时需根据具体硬件平台调整网络驱动和实时性配置。

极地星辰 3883

Xilinx ZYNQ 7000学习笔记二(FSBL代码分析启动-汇编代码)

Xilinx ZYNQ 7000学习笔记

u011116085的博客 4247

springmvc之异常处理(包含处理步骤)

这个注解是异常注解,放在类上面,代表这个类统一处理异常,是rest开头的,代表处理rest风格的异常,基于AOP思想,所以又含有advice,通常配合@ExceptionHandler使用,这个异常代表指定要拦截哪些异常。:设置异常指定的处理方案,功能等同于控制器方法,出现异常后终止原始控制器执行,并转入当前的方法执行。(4)表现层抛出的异常:因数据收集、校验等规矩导致(例如:不匹配的数据类型间导致异常)(3)业务层抛出的异常:因业务逻辑书写错误导致(遍历业务书写操作,导致索引异常等)

快乐学习 1632

技术文档的语言表达:简洁、准确与易懂的平衡艺术

技术文档的语言表达不仅要简洁、准确,还需要能够打破技术壁垒,使不同背景的读者都能理解。这是一项需要技巧和经验的工作,它要求技术作者既要具备扎实的专业知识,又要具备清晰的表达能力。通过不断打磨语言的简洁性、准确性和易懂性,我们能够创造出一份高质量的技术文档,让知识的传递不再受限于语言的障碍。

人心有反复,好在山水有重逢。 4677

SpringMVC异常处理的四种方法

常见的异常处理包括404/500等服务器异常后的页面跳转,以及代码编译异常的处理(跳转页面或处理该异常),这里展示4种最基础方法 1. web.xml根据状态码跳转页面 设置web.xml 由于前端控制器对资源的拦截,无法直接跳转到视图,所以location设置的是控制器映射路径 除了响应码标签配置error-code外,还有异常类名标签配置:exception-type <!-- 报错页面跳转 --> <error-page> <error-code&gt.

victory599的博客 401

LPDDR6来了!带你一文看懂它和LPDDR5/5X的差距 + 技术演进逻辑全解析

🧠从速率到架构,从总线宽度到协议设计,LPDDR6 每一个改动都不是拍脑袋做的,它针对的是AI / HPC / 云计算 / 下一代笔记本平台的真实需求。作为工程师的我们,不仅要“用得上”,更要“测得准”,因为没有测试验证,就没有量产落地!🎯LPDDR6不是未来,而是现在进行时!

weixin_43199439的博客 2175

uniapp [全端兼容] - 实现连接蓝牙电子秤+监听数据转换并实时返回示例代码,uniApp实现BLE蓝牙连接多个电子秤设备、蓝牙通讯协议对接详细教程(全平台兼容H5、微信小程序、苹果安卓App)

uniapp连接蓝牙电子秤,uniapp如何连接电子秤蓝牙,蓝牙称重,实现监听数据转换并实时返回,多蓝牙,uni-app电子秤16进制蓝牙通讯协议对接,uniapp微信小程序蓝牙获取电子秤的值,uniapp蓝牙称重电子秤,蓝牙电子秤硬件,APP端连接蓝牙秤获取重量实时显示在页面上蓝牙秤,插件组件,蓝牙连接失败,uniapp安卓苹果ios连接蓝牙电子秤没反应,uniapp微信小程序 蓝牙低功耗连接发送数据监听接收,uni-app小程序蓝牙连接、读写数据全过程,uniapp连接蓝牙体脂秤,蓝牙搜索不到怎么办,如

🏆 前端领域优质创作者 1万+

spring mvc4:异常处理

前面学习过struts2的异常处理,今天来看下spring mvc4的异常处理: 一、Servlet配置文件修改 1 &lt;bean id="exceptionResolver" 2 class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"&gt; 3 ...

weixin_34200628的博客 230

基于ESP32 蓝牙游戏手柄设计

介绍使用 ESP32 并通过 BLE 通信的 设计手持游戏手柄,包含原理图与代码

DT程序员的博客 2164

SpringMVC 处理异常的4种方式

 springmvc处理异常有三种方式: 1.在一个controller中定义一个方法,用@ExceptionHandler注解标注。(优先级最高) ? 1 2 3 4 5 6 @ExceptionHandler public ModelAndView handleException(Exception exception){

daxiahaos的博客 407

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

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

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

SpringMVC4.3x教程之八异常的三种处理方式

SpirngMVC提供了对异常的捕获,常用的有三种方式: 1、自带的异常解析类 2、自定义异常解析类 3、使用注解实现异常解析捕获 SpringMVC在运行中的异常都是从下往上抛出的最后到达ExceptionResolver进行异常的处理,但是前端控制器没有给出该异常解析器的默认对象,想要使用那么就需要进行实现。控制器://异常处理控制器

程序员Feri 1097

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

2.4.9 SpringMVC进阶, ajax异步交互(RequestBody, ResponseBody), RESTful编程风格, 文件上传方式, 异常处理机制, 拦截器的使用

任务二:springmvc进阶 课程任务主要内容: 一 ajax异步交互 Springmvc默认用MappingJackson2HttpMessageConverter对json数据进行转换,需要加入jackson的包;同时使用 <mvc:annotation-driven /> <dependency> <groupId>com.fasterxml.jackson.core</groupId>

chengh1993的博客 478

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Spring MVC 异常处理最佳实践

关于Spring MVC 异常处理的最佳实践

小灯光环 8443

13_SpringMVC_异常处理

SpringMVC异常简介系统中异常包括两类:预期异常(检查型异常)和运行时异常 RuntimeException,前者通过捕获异常从而获取异常信息, 后者主要通过规范代码开发、测试通过手段减少运行时异常的发生。系统的 dao、service、controller 出现都通过 throws Exception 向上抛出,最后由 springmvc 前端控制器交由异常处理器进行异常处理,如下图。

booker009的博客 104

SpringMVC-----SpringMVC 的异常

使用SpringMVC框架处理异常

qq_48788523的博客 241

【Java从0到架构师】SpringMVC - 异常处理_拦截器

异常处理_拦截器异常处理简单的异常与页面映射 - SimpleMappingExceptionResolver√自定义异常处理类 - 实现 HandlerExceptionResolver 接口@ExceptionHandler√@ExceptionHandler + @ControllerAdvice拦截器 (Interceptor)实现 HandlerInterceptor 接口配置拦截器方法解析 preHandle、postHadnle、afterCompletion Java 从 0 到架构师目录

萌宅鹿的技术小屋 476

Spring MVC 的全局异常处理器

这是一个组合注解,相当于和的组合。它表明这个类是一个全局异常处理器,并且其中的方法会返回 JSON 格式的数据给客户端。@Slf4j: 这是 Lombok 提供的注解,用于自动生成日志记录器。它会在编译时生成一个名为log的日志记录器,你可以直接使用它来记录日志,而不需要显式地创建一个日志记录器对象。: 这是一个注解,用于指定要处理的异常类型。在这个示例中,没有指定具体的异常类型,表示处理所有类型的异常。在处理异常时,Spring MVC 会自动将抛出的异常传递给带有注解的方法。

yuban10403的博客 441

Struts2、Spring MVC4 框架下的ajax统一异常处理

本文算是struts2 异常处理3板斧、spring mvc4:异常处理 后续篇章,普通页面出错后可以跳到统一的错误处理页面,但是ajax就不行了,ajax的本意就是不让当前页面发生跳转,仅局部刷新,从而改善用户体验,基本思路是:把异常转换成json数据返回,这样ajax的回调函数,就能解析出错误原因。   一、如何区分ajax请求与普通请求 打开firefox的调试工具观察一下: 普通的...

weixin_33893473的博客 178

SpringMVC 的三种异常处理方式详解

异常处理在开发中的重要性不言而喻。通过全局异常处理,可以提高系统的可维护性、容错性和安全性,改善用户体验,方便系统监控和问题排查。在Spring MVC中,合理分类和处理应用程序异常和系统异常,使用自定义异常类和全局异常处理器,可以实现精细化的异常处理。配置SimpleMappingExceptionResolver处理器和实现HandlerExceptionResolver接口是常见的实现方式。此外,响应封装类的使用可以统一响应数据格式,简化客户端处理逻辑,提供异常处理和多语言支持,增强应用程序的可维护性

让优秀成为一种习惯! 3625
上一篇: Eclipse去掉未使用的引用
下一篇: postgresql实现模糊查询 正则表达式
weixir123
博客等级 码龄16年 1粉丝 207原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值