当我们编写程序时,不可避免的会发生异常,当后端代码执行时抛了异常而不进行处理的话就会直接输出到页面上,这是非常不友好的。我们不希望用户在页面上看到异常信息,因此我们需要编写异常处理的机制来对异常的情况进行处理。
在SpringMVC框架下,编写异常处理的步骤如下:
- 编写自定义异常类
package cn.snowing.exception;
/**
* 自定义的异常类
*/
public class SysException extends Exception{
//存储信息
private String message;
public SysException(String message) {
this.message = message;
}
@Override
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
- 编写异常处理器
package cn.snowing.exception;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class SysExceptionResolver implements HandlerExceptionResolver {
/**
* 处理异常的业务逻辑
* @param httpServletRequest
* @param httpServletResponse
* @param o
* @param ex
* @return
*/
@Override
public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception ex) {
//获取异常对象
SysException e = null;
if (ex instanceof SysException){
e = (SysException) ex;
}else {
e = new SysException("系统正在维护");
}
//创建ModelAndView
ModelAndView mv = new ModelAndView();
mv.addObject("errorMsg", e.getMessage());
mv.setViewName("error");
return mv;
}
}
- 配置异常处理器(跳转到提示页面)
<bean id="sysExceptionResolver" class="cn.snowing.exception.SysExceptionResolver"/>