ssm框架之异常处理

mac2022-06-30  10

异常处理思路

系统中异常包括两类:预期异常和运行时异常runtimeexception,前者通过捕获异常从而获取异常信息,后者主要通过规范代码开发、测试通过手段减少运行时异常的发生。

系统的dao、service、controller出现都通过throws Exception向上抛出,最后由springMVC前端控制器交由异常处理器进行异常处理,如下图:

 

 

 springMVC提供全局异常处理器进行统一的异常处理,一个系统只有一个异常处理器

1自定义异常类

对不同的异常类型定义异常类,继承Exception

/** * Created by Alex on 2017/6/29. * 系统自定义异常类 */ public class CustomException extends Exception { //异常信息   public String message;   public CustomException(String message){     super(message);     this.message = message;   }   @Override   public String getMessage() {     return message;   }   public void setMessage(String message) {     this.message = message;   }}

2配置全局异常处理器

思路:

系统遇到异常时,在程序中手动抛出,dao抛给service,service抛给controller,最后controller抛给前端控制器,前端控制器调用全局异常处理器。

全局异常处理器处理思路:

解析异常类型,若该异常类型是系统自定义的异常,直接取出异常信息在错误页面展示即可。

如果不是系统自定义异常,构造一个系统自定义的异常类型,信息为“未知错误”

springMVC提供一个HandlerExceptionResolver

/** * Created by Alex on 2017/6/29. * 全局异常处理器 */ public class CustomExceptionResolver implements HandlerExceptionResolver{ /** * 系统抛出的异常 * @param httpServletRequest * @param httpServletResponse * @param o * @param e 系统抛出的异常 * @return */ @Override public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) { // 解析出异常类型 CustomException customException = null; // 若该异常类型是系统自定义的异常,直接取出异常信息在错误页面展示即可。 if(e instanceof CustomException){ customException = (CustomException)e; }else{ // 如果不是系统自定义异常,构造一个系统自定义的异常类型,信息为“未知错误” customException = new CustomException("未知错误"); } //错误信息 String message = customException.getMessage(); ModelAndView modelAndView = new ModelAndView(); //将错误信息传到页面 modelAndView.addObject("message",message); //指向错误页面 modelAndView.setViewName("error"); return modelAndView; } }

3配置错误页面

<%-- Created by IntelliJ IDEA. User: Alex Date: 2017/6/29 Time: 20:06 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>失败!</title> </head> <body> ${message} </body> </html>

4springMVC.xml中配置全局异常处理器

<!-- 全局异常处理器 只要类实现了HandlerExceptionResolver接口,就是一个全局异常处理器哦 --> <bean class="com.alex.ssm.exception.CustomExceptionResolver"/>

注意:

系统自定义异常,建议在项目所有的功能都完成后再进行添加。

 

转载于:https://www.cnblogs.com/liu1275271818/p/11495228.html

最新回复(0)