springmvc三十:异常处理流程
handlerExceptionResolvers 异常解析也是springmvc的9大组件之一。
DispatcherServlet.properties中默认的异常解析如下:
org.springframework.web.servlet.HandlerExceptionResolver=
org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver 处理@ExceptionHandler
org.springframework.web.servlet.mvc.annotation.ResponseStatusExceptionResolver 处理@ResponseStatus, @ResponseStatus标注在自定义异常类上
org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver 判断是否SpringMVC自带的异常
package com.atchina;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;@Controller
public class ExceptionTestController {@RequestMapping("/handler01")public String handler01(Integer i){System.out.println(10/i);return "success";}/*** 告诉SpringMVC这个方法专门处理这个类发生的异常 * 1. 给方法写一个Exception,接受发生的异常* 2. 返回ModelAndView*/@ExceptionHandler(value={ArithmeticException.class,NullPointerException.class})public ModelAndView handleException01(Exception exception){ModelAndView andView = new ModelAndView("myerror");andView.addObject("ex", exception);return andView;}
}
全局异常处理类
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.servlet.ModelAndView;// 集中处理所有异常的类加入到ioc容器中
// @ControllerAdvice专门处理异常的类
@ControllerAdvice
public class MyGlobalException {@ExceptionHandler(value={ArithmeticException.class,NullPointerException.class})public ModelAndView handleException01(Exception exception){ModelAndView andView = new ModelAndView("myerror");andView.addObject("ex", exception);return andView;}
}
使用HttpStatus
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ResponseStatus;@ResponseStatus(reason="用户名不正确", code=HttpStatus.NOT_ACCEPTABLE)
public class UserNameNotFoundException extends RuntimeException{private static final long serialVersionUID = 1L;}
测试
@RequestMapping("/handler02")public String handler02(@RequestParam("username")String username){if(!"admin".equals(username)){throw new UserNameNotFoundException();}return "success";}
springmvc三十:异常处理流程相关推荐
- springmvc三十二:spring mvc的运行流程
1. 所有的请求,前端控制器(DispatcherServlet)收到请求,调用doDispatch进行处理 2. 根据HandlerMapping中保存的请求映射信息找到,处理当前请求的,处理器执行 ...
- SpringMVC异常处理流程总结
一.异常处理方式一:@ControllerAdvice+@ExceptionHandler (1)使用方法 通过@ControllerAdvice+@Exception的方式便可以指定在请求处理的整个 ...
- 【正点原子Linux连载】第三十二章 U-Boot启动流程详解 -摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.0
1)实验平台:正点原子阿尔法Linux开发板 2)平台购买地址:https://item.taobao.com/item.htm?id=603672744434 2)全套实验源码+手册+视频下载地址: ...
- Altium Designer 18 速成实战 第五部分 PCB流程化设计常用操作(三十)Cutout的放置
Altium Designer 18 速成实战 第五部分 PCB流程化设计常用操作(三十)Cutout的放置 目录 一.正片割铜 1.选择多边形铺铜挖空 2.画出某片区域 3.重新铺铜 4.结束,消 ...
- (转)SpringMVC学习(十二)——SpringMVC中的拦截器
http://blog.csdn.net/yerenyuan_pku/article/details/72567761 SpringMVC的处理器拦截器类似于Servlet开发中的过滤器Filter, ...
- Python三十年技术演变史
作者 | 宋天龙,大数据技术专家,触脉咨询合伙人兼副总裁,前Webtrekk中国区技术和咨询负责人(Webtrekk,德国的在线数据分析服务提供商).擅长数据挖掘.建模.分析与运营,精通端到端数据价值 ...
- java day62【 响应数据和结果视图 、 SpringMVC 实现文件上传 、 SpringMVC 中的异常处理 、 SpringMVC 中的拦截器 】...
第1章 响应数据和结果视图 1.1返回值分类 1.1.1 字符串 1.1.2 void 1.1.3 ModelAndView 1.2转发和重定向 1.2.1 forward 转发 1.2.2 Redi ...
- JAVA之旅(三十五)——完结篇,终于把JAVA写完了,真感概呐!
JAVA之旅(三十五)--完结篇,终于把JAVA写完了,真感概呐! 这篇博文只是用来水经验的,写这个系列是因为我自己的java本身也不是特别好,所以重温了一下,但是手比较痒于是就写出了这三十多篇博客了 ...
- JAVA基础再回首(三十)——JAVA基础再回首完美结束,感概万千!
JAVA基础再回首(三十)--JAVA基础再回首完美结束,感概万千! 经过了几个月断断续续的回首java基础,终于回首完了,这一路走来体会到了枯燥.乏味.有趣,当然更多是收获,和第一遍学java基础的 ...
最新文章
- C++中char类型的溢出问题
- 共享内存:mmap函数实现
- 云计算与星辰大海的结合——不要回答,来自百亿光年外的未知信号
- 【Linux 命令】云服务器 ECS (CentOS) 开启防火墙操作
- [poj2311]Cutting Game_博弈论
- impdp oracle 只导入表结构_oracle数据库怎么导入dmp,只导入数据不导入表结构?...
- 一次量产恢复U盘真实容量的操作过程(安国主控芯片)
- 最大流最小割算法证明
- python selenium 的使用——alibaba询盘
- 《一个供应链项目经理谈项目心得体会》读后感
- ios申请企业开发者账号的代理_iOS企业级开发者账号申请
- 陈天奇:机器学习科研的十年
- 使用 Metasploit 利用 OpenSSH 用户枚举漏洞 (CVE-2018-15473, CVE-2016-6210, CVE-1999-0502)
- oracle查询备份大小,【EXPDP】使用EXPDP备份数据时预估大小——ESTIMATE参数
- 4G LTE网络空口时延
- c语言程序设计教程第二版李春葆,C语言程序设计教程.第2版
- 零基础学Python 掌握这些让你一个月上手做项目
- 教你使用内嵌chatGPT的新必应(bing)
- 鸟哥的Linux私房菜-基础学习篇(第四版):鸟哥-电子书
- 人工智能意念控制打字_智能打字稿批量属性分配
热门文章
- pgjdbc源码分析
- 【转】Nginx系列(五)--nginx+tomcat实现负载均衡
- |Tyvj|动态规划|P1004 滑雪
- IOS错误总结:Unknown type name 'CGRect';did you mean 'Rect'
- 【转】如何选好Android开发书籍和教程[总结]
- 用页传值方式解决模态窗口的Response.WriteFile文件下载
- 十天学会ASP.net
- Spring Boot 自动配置之条件注解
- 如何找回被create or replace覆盖的PL/SQL对象
- scalikejdbc 学习笔记(4)