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三十:异常处理流程相关推荐

  1. springmvc三十二:spring mvc的运行流程

    1. 所有的请求,前端控制器(DispatcherServlet)收到请求,调用doDispatch进行处理 2. 根据HandlerMapping中保存的请求映射信息找到,处理当前请求的,处理器执行 ...

  2. SpringMVC异常处理流程总结

    一.异常处理方式一:@ControllerAdvice+@ExceptionHandler (1)使用方法 通过@ControllerAdvice+@Exception的方式便可以指定在请求处理的整个 ...

  3. 【正点原子Linux连载】第三十二章 U-Boot启动流程详解 -摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.0

    1)实验平台:正点原子阿尔法Linux开发板 2)平台购买地址:https://item.taobao.com/item.htm?id=603672744434 2)全套实验源码+手册+视频下载地址: ...

  4. Altium Designer 18 速成实战 第五部分 PCB流程化设计常用操作(三十)Cutout的放置

    Altium Designer 18 速成实战 第五部分 PCB流程化设计常用操作(三十)Cutout的放置 目录 一.正片割铜 1.选择多边形铺铜挖空 2.画出某片区域 3.重新铺铜 ​4.结束,消 ...

  5. (转)SpringMVC学习(十二)——SpringMVC中的拦截器

    http://blog.csdn.net/yerenyuan_pku/article/details/72567761 SpringMVC的处理器拦截器类似于Servlet开发中的过滤器Filter, ...

  6. Python三十年技术演变史

    作者 | 宋天龙,大数据技术专家,触脉咨询合伙人兼副总裁,前Webtrekk中国区技术和咨询负责人(Webtrekk,德国的在线数据分析服务提供商).擅长数据挖掘.建模.分析与运营,精通端到端数据价值 ...

  7. 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 ...

  8. JAVA之旅(三十五)——完结篇,终于把JAVA写完了,真感概呐!

    JAVA之旅(三十五)--完结篇,终于把JAVA写完了,真感概呐! 这篇博文只是用来水经验的,写这个系列是因为我自己的java本身也不是特别好,所以重温了一下,但是手比较痒于是就写出了这三十多篇博客了 ...

  9. JAVA基础再回首(三十)——JAVA基础再回首完美结束,感概万千!

    JAVA基础再回首(三十)--JAVA基础再回首完美结束,感概万千! 经过了几个月断断续续的回首java基础,终于回首完了,这一路走来体会到了枯燥.乏味.有趣,当然更多是收获,和第一遍学java基础的 ...

最新文章

  1. C++中char类型的溢出问题
  2. 共享内存:mmap函数实现
  3. 云计算与星辰大海的结合——不要回答,来自百亿光年外的未知信号
  4. 【Linux 命令】云服务器 ECS (CentOS) 开启防火墙操作
  5. [poj2311]Cutting Game_博弈论
  6. impdp oracle 只导入表结构_oracle数据库怎么导入dmp,只导入数据不导入表结构?...
  7. 一次量产恢复U盘真实容量的操作过程(安国主控芯片)
  8. 最大流最小割算法证明
  9. python selenium 的使用——alibaba询盘
  10. 《一个供应链项目经理谈项目心得体会》读后感
  11. ios申请企业开发者账号的代理_iOS企业级开发者账号申请
  12. 陈天奇:机器学习科研的十年
  13. 使用 Metasploit 利用 OpenSSH 用户枚举漏洞 (CVE-2018-15473, CVE-2016-6210, CVE-1999-0502)
  14. oracle查询备份大小,【EXPDP】使用EXPDP备份数据时预估大小——ESTIMATE参数
  15. 4G LTE网络空口时延
  16. c语言程序设计教程第二版李春葆,C语言程序设计教程.第2版
  17. 零基础学Python 掌握这些让你一个月上手做项目
  18. 教你使用内嵌chatGPT的新必应(bing)
  19. 鸟哥的Linux私房菜-基础学习篇(第四版):鸟哥-电子书
  20. 人工智能意念控制打字_智能打字稿批量属性分配

热门文章

  1. pgjdbc源码分析
  2. 【转】Nginx系列(五)--nginx+tomcat实现负载均衡
  3. |Tyvj|动态规划|P1004 滑雪
  4. IOS错误总结:Unknown type name 'CGRect';did you mean 'Rect'
  5. 【转】如何选好Android开发书籍和教程[总结]
  6. 用页传值方式解决模态窗口的Response.WriteFile文件下载
  7. 十天学会ASP.net
  8. Spring Boot 自动配置之条件注解
  9. 如何找回被create or replace覆盖的PL/SQL对象
  10. scalikejdbc 学习笔记(4)