SpringMVC异常处理思路
Controller调service,service调dao层,异常都是向上抛出,最终由dispathServlet找异常处理器处理。
不做任何异常处理,异常就会抛给sevlet然后返回给页面,用户就能看到错误信息。
常用做法:
配置异常处理器
- 实现HandlerExceptionResolver接口
package com.kingfan.exception;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;
import javax.annotation.PostConstruct;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@Component
public class SysExceptionResolver implements HandlerExceptionResolver {
@PostConstruct
public void init(){
System.out.println("执行");
}
@Override
public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) {
// 获取到异常对象
if(e instanceof SystemException){
e = (SystemException)e;
}else {
e = new SystemException("系统异常");
}
// 创建ModeAndView
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("errorMsg",e.getMessage());
modelAndView.setViewName("error");
return modelAndView;
}
}
- 将该类加载到spring容器里即可。