SpringMVC之异常处理
时间:2019-11-20
本文章向大家介绍SpringMVC之异常处理,主要包括SpringMVC之异常处理使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1 概述
- SpringMVC通过HandlerExceptionResolver处理程序的异常,包括Handler映射、数据绑定以及目标方法执行时发生的异常。
- SpringMVC提供的HandlerExceptionResolver的实现类如下:
2 ExceptionHandlerExceptionResolver
- 主要处理Handler中用@ExceptionHandler注解定义的方法。
- @ExceptionHandler注解定义的方法优先级问题:如果发生的异常时NullPointerException,但是声明的异常由RuntimeException和Exception,此时会根据异常的最近继承关系找到继承深度最浅的哪个@ExceptionHandler注解方法,即标记了RuntimeException的方法。
- ExceptionHandlerExceptionResolver内部如果找不到@ExceptionHandler注解的话,就会找@ControllerAdvice中的@ExceptionHandler注解方法。
3 ResponseStatusExceptionResolver
- 在异常及异常父类中找到@ResponseStatus注解,然后使用这个注解的属性进行处理。
- 定义一个@ResponseStatus注解修饰的异常类:
package com.sunxiaping.springmvc.exception; import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.ResponseStatus; @ResponseStatus(HttpStatus.UNAUTHORIZED) public class UnauthorizedException extends RuntimeException { }
- 如果在处理器方案分中抛出了上述异常:假如ExceptionHandlerExceptionResolver不解析该异常,由于触发的异常UnauthorizedException带有@ResponseStatus注解。因此会被ResponseStatusExceptionResolver解析到,最后响应HttpStatus.UNAUTHORIZED代码到客户端。
4 DefaultHandlerExceptionResolver
- 对一些特殊的异常处理,比如NoSuchRequestHandingMethodException、HttpRequestMethodNotSupportedException、HttpMediaTypeNotSupportedException等。
5 SimpleMappingExceptionHandler
- 如果希望对所有的异常进行处理,可以使用SimpleMappingExceptionResolver,它将异常类名映射为视图名,即发生异常时使用对应的视图报告异常。
<bean id="simpleMappingExceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"> <property name="exceptionMappings"> <props> <prop key="java.lang.ArithmeticException">error</prop> </props> </property> </bean>
原文地址:https://www.cnblogs.com/xuweiweiwoaini/p/11900584.html
- python高阶函数:map(f,[list]),reduce(f,[list],可选初始值),
- 深入探讨 Java 类加载器
- 斐波那契查找原理详解与实现
- 增量数据丢失的原因分析(二)(r8笔记第76天)
- pycharm 之模块与模块引用
- 判断栈的出栈顺序合法性
- Combination Sum II 组合数求和之2-Leetcode
- Combination Sum 组合数求和-Leetcode
- python 中输出字符的颜色控制属性
- 一则数据库无法重启的案例分析(r8笔记第96天)
- 最大公约数和最小公倍数及其应用(Go语言解法)
- JAVA private私有类的 默认构造函数 的生成过程
- 一次数据变更的审核过程(r8笔记第95天)
- JavaScript 学习一
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- Android ListView控件使用方法
- Android开发之Android.mk模板的实例详解
- android实现文件下载功能
- Android实现可以展开的TextView
- 详解android 用webview加载网页(https和http)
- Android自定义网络连接工具类HttpUtil
- Android Studio时间选择器的创建方法
- Android 拦截返回键事件的实例详解
- Android自定义可点击的ImageSpan并在TextView中内置View
- Android开发实现带清空按钮的EditText示例
- Android用于校验集合参数的小封装示例
- TextView中URL等指定特殊字符串与点击事件解析
- Android开发实现仿京东商品搜索选项卡弹窗功能
- Android开发中button按钮的使用及动态添加组件方法示例
- Kotlin开发的一些实用小技巧总结