重点 : 掌握异常处理的三种方式
异常处理的意义
·现实: 在项目的开发中,不可避免会遇到各种可预知的、不可预知的异常需要处理
·问题: 每个过程如果都单独处理异常,系统的代码耦合度高,工作量大且不好统一
·解决方案: 将所有类型的异常处理过程解耦出来,这样就实现了异常处理信息的统一处理和维护,大大降低了维护复杂度
异常处理的三种方式
·自定义异常处理器 HandlerExceptionResolver (不是重点,用来理解)
·简单异常处理器 SimpleMappingExceptionResolver (用的非常普遍)
·注释实现异常处理 @ExceptionHandler (太灵活)
自定义异常类
- 继承RunningTimeException
- 提供自定义异常类构造方法
/**
* 自定义业务异常类
* @author Administrator
*
*/
public class BusinessException extends RuntimeException {
public BusinessException() {
super();
}
public BusinessException(String message, Throwable cause,
boolean enableSuppression, boolean writableStackTrace) {
super(message, cause, enableSuppression, writableStackTrace);
}
public BusinessException(String message, Throwable cause) {
super(message, cause);
}
public BusinessException(String message) {
super(message);
}
public BusinessException(Throwable cause) {
super(cause);
}
}
自定义异常处理器
- 实现异常处理器接口 HandlerExceptionResolver
- 实现异常处理方法 resolveException
- 配置文件中添加自定义异常处理机制
一、实现异常处理器接口创建自定义异常处理器:
二、在SpringMVC的配置文件中添加配置:
简单映射异常处理器
配置: SimpleMappingExceptionResolver
注解实现异常处理器
·使用注解: @ExceptionHandler 标注异常处理方法
未捕获异常的处理
·未捕获异常如何处理
如果类型为非强制捕获异常,而代码中没有针对这些意料之外的异常进行处理,那么会产生404,500等服务器内错误页面,这些会带来非常差的用户体验。
·为了解决这一问题,不同的应用服务器提供了不同的处理方式:tomcat可以通过配置web.xml配置文件,抓取错误码并返回指定的错误页面
三种处理的比较:
异常处理方式 优点 缺点
自定义异常处理器 在代码层进行逻辑处理,理解原理 代码量大
简单映射异常处理器 可扩展性强(项目中较为常用) 配置繁琐
注解式异常处理 配置灵活 只能标注方法