SpringMVC - 异常处理

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

Controller调用service,service调用dao,异常都是向上抛出的,最终有DispatcherServlet找全局的异常处理器进行统一的异常的处理

自定义异常类

public class SysException extends Exception{
 
    private static final long serialVersionUID = 4055945147128016300L;        
    // 异常提示信息    
    private String message;    
    public String getMessage() {        
    	return message;    
    }    
    public void setMessage(String message) {        
    	this.message = message;    
    }   
    public SysException(String message) {        
    this.message = message;    
    }
 

自定义异常处理器

思路:
全局异常处理器解析出异常类型,如果是系统自定义的异常,在错误页面展示
如果不是,则构造出一个新的自定义异常

public class SysExceptionResolver implements HandlerExceptionResolver{
 
    /**     
    * 跳转到具体的错误页面的方法     
    */    
    public ModelAndView resolveException(HttpServletRequest request, 
    	HttpServletResponse response, 
    	Object handler,//处理器适配器要执行的handler            
    	Exception ex//抛出的异常
    	) {        
    		ex.printStackTrace();        
    		SysException e = null;        
    		// 获取到异常对象        
    		if(ex instanceof SysException) {  
    			e = (SysException) ex;        
    		}else {   
    			e = new SysException("请联系管理员");       
    		}        
    		ModelAndView mv = new ModelAndView();        
    		// 存入错误的提示信息        
    		mv.addObject("message", e.getMessage());       
    		// 跳转的Jsp页面        
    		mv.setViewName("error");       
    		return mv;    
    	}
}

配置异常处理器

<!-- 配置异常处理器 --> 
<bean id="sysExceptionResolver" class="cn.itcast.exception.SysExceptionResolver"/>
发布了167 篇原创文章 · 获赞 3 · 访问量 5409

猜你喜欢

转载自blog.csdn.net/weixin_43907800/article/details/104862105