1. SpringMVC通过HandlerExceptionResolver处理程序的异常,包括Handler映射,数据绑定以及目标方法执行时发生的异常

2.SpringMVC提供的HandlerExceptionResolver的实现类:(标注红×的已被废弃)

  

    

  -- 其中被SpringMVC默认装配的

    

3. ExceptionHandlerExceptionResolver

  -- 在@ExceptionHandler 方法的入参中可以加入Exception类型的参数,该参数即对应发生的异常对象

  -- 在@ExceptionHandler方法的入参中不能传入Map。若希望把异常信息传到页面上,需要使用ModelAndView作为返回值

  -- @ExceptionHandler方法标记的异常有优先级问题。优先抛出距离自己近的父类

  -- @ControllerAdvice  :如果在当前方法找不到@ExceptionHandler标记的方法,则去@ControllerAdvice 标记的类中寻找相应的方法

@ControllerAdvice
public class ExceptionHandlerHandler { @ExceptionHandler(value= {RuntimeException.class})
public ModelAndView testExceptionHandler2(Exception ex) {
System.out.println("[RuntimeException]出异常了...");
System.out.println(ex);
ModelAndView mv = new ModelAndView("error");
mv.addObject("exception", ex);
return mv;
} @ExceptionHandler(value= {ArithmeticException.class})
public ModelAndView testExceptionHandler(Exception ex) {
System.out.println("[ArithmeticException]出异常了...");
System.out.println(ex);
ModelAndView mv = new ModelAndView("error");
mv.addObject("exception", ex);
return mv;
}
}

4. ResponseStatusExceptionResolver

  -- 在异常及异常父类中找到@ResponseStatus注解,然后使用这个注解的属性进行处理

  -- 定义一个@ResponseStatus注解修饰的异常类

  -- 若在处理器方法中抛出了上述异常:若ExceptionHandlerExceptionResolver不解析异常。由于触发的异常 UnauthorizedException带有@ResponseStatus注解。因此会被ResponseStatusExceptionResolver解析到。最后响应HttpStatus.UNAUTHORIZED代码给客户端。HttpStatus.UNAUTHORIZED代表响应码401,无权限。关于其他响应码可参考HttpStatus枚举类型源码

5. DefaultHandlerExceptionResolver

  -- 对一些特殊异常进行处理,具体可参看源码,比如

    

6.SimpleMappingExceptionResolver

  -- 如果希望对所有异常进行统一处理,可以使用SimpleMappingExceptionResolver,它将异常类名映射为视图名,即发生异常时使用对应的视图报告异常

  -- SimpleMappingExceptionResolver会在requestScope请求域中放入属性“exception” 来对应所抛出的异常

    可通过exceptionAttribute更改属性名

    

  -- 若exceptionMappings 的prop的Key 为空时,将映射所有异常

    

SpringMVC听课笔记(十四:异常处理)的更多相关文章

  1. SpringMVC听课笔记(四:映射请求参数 & 请求头)

    1.请求参数 @RequestParam  来映射请求参数  http://localhost:8080/springmvc-1/springmvc/testRequestParam?username ...

  2. python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例

    python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例 新浪爱彩双色球开奖数据URL:http://zst.aicai.com/ssq/openInfo/ 最终输出结果格 ...

  3. 《C++游戏开发》笔记十四 平滑过渡的战争迷雾(二) 实现:真正的迷雾来了

    本系列文章由七十一雾央编写,转载请注明出处.  http://blog.csdn.net/u011371356/article/details/9712321 作者:七十一雾央 新浪微博:http:/ ...

  4. SpringMVC听课笔记(一:SpringMVC概述)

    地址 :https://www.bilibili.com/video/av14907450 版本:4.x 概述: 概要: 一:SpringMVC概述 二:SpringMVC的 HelloWorld 三 ...

  5. (C/C++学习笔记) 十四. 动态分配

    十四. 动态分配 ● C语言实现动态数组 C语言实现动态数组,克服静态数组大小固定的缺陷 C语言中,数组长度必须在创建数组时指定,并且只能是一个常数,不能是变量.一旦定义了一个数组,系统将为它分配一个 ...

  6. SpringMVC 学习笔记(十) 异常处理HandlerExceptionResolver

    Spring MVC 通过 HandlerExceptionResolver 处理程序的异常,包含 Handler 映射.数据绑定以及目标方法运行时发生的异常. SpringMVC 提供的 Handl ...

  7. SpringMVC听课笔记(十五:SpringMVC 运行流程)

    1. 图 一般的会按照红线标注的方向去行进,但是请求静态资源,或者出现异常等,会出现其他路径 2.

  8. SpringMVC听课笔记(十二:文件的上传)

    1.Spring MVC为文件上传提供了直接的支持,这种支持是通过即插即用的MultipartResolver实现的.Spring用Jakarta Commons FileUpload技术实现了一个M ...

  9. SpringMVC听课笔记(十:处理JSON: 使用HttpMessageConverter)

    1. 处理JSON 2. 原理 流程图 3. 看个应用吧 -- 上传 ①jsp ②handler -- 下载 ① jsp ② handler

随机推荐

  1. [LeetCode]234. Palindrome Linked List判断回文链表

    重点是: 1.快慢指针找到链表的中点.快指针一次走两步,慢指针一次走一步,分清奇偶数情况. 2.反转链表.pre代表已经反转好的,每次将当前节点指向pre /* 快慢指针得到链表中间,然后用206题方 ...

  2. ESP8266系列图片外观 Wi-Fi模块一共有01~14十多款模块

  3. Redis+LUA整合使用

    .前言 从本章节开始我们就开始讲解一些 Redis 的扩展应用了,之前讲的主从.哨兵和集群都相当重要,也许小公司用不到集群这么复杂的架构,但是也要了解各知识点的原理,只要了解了原理,无论什么时候是有, ...

  4. Python错误重试方法

    前言 Tenacity是一个 Apache 2.0授权的通用重试库,用 Python 编写,用于简化向几乎所有内容添加重试行为的任务.它起源于一个重新尝试的分支,可惜这个分支已经不复存在了. 使用Te ...

  5. 使用mono-repo实现跨项目组件共享

    本文会分享一个我在实际工作中遇到的案例,从最开始的需求分析到项目搭建,以及最后落地的架构的整个过程.最终实现的效果是使用mono-repo实现了跨项目的组件共享.在本文中你可以看到: 从接到需求到深入 ...

  6. node环境使用lowdb轻量数据库以及基本用法

    1.安装: npm install lowdb --save 2..引入lowdb,设置表 const low = require('lowdb');  const FileSync = requir ...

  7. 修改postman工具的代码生成工具让它锦上添花

    @font-face { font-family: octicons-link; src: url("data:font/woff;charset=utf-8;base64,d09GRgAB ...

  8. JVM 源码分析(二):搭建 JDK 8 源码调试环境(Windows 上使用 CLion)

    前言 一.准备源码 二.安装 "Bootstrap JDK" 三.配置编译环境 四.编译与测试 五.安装 CMake 和 GDB 五.准备远程调试 六.开始远程调试 前言 上一篇文 ...

  9. Linux基础命令整合

    linux基础命令整理 1.系统相关命令 shutdown -h now 关闭系统(1) init 0 关闭系统(2) telinit 0 关闭系统(3) shutdown -h hours:minu ...

  10. 浅谈localStorage的使用场景和优劣势,以及sessionStorage和cookie

    一.localStorage,sessionStorage,cookie的简单介绍 localStorage:仅在客户端存储不参与服务器通信,存储大小一般为5M,如果不是人为清除,那么即使是关闭浏览器 ...