异常处理思路
Spring MVC 在处理请求过程中出现异常信息交由异常处理器进行处理,自定义异常处理器可以实现一个系统的异常处理逻辑。
系统的 dao 、 service 、 controller 出现都通过 throws Exception 向上抛出,最后由 Spring MVC 的前端控制器交由异常处理器进行异常处理。
编写自定义异常实现类,并将实现类配置到 spring 容器中。
Spring MVC 中的异常处理特别有用,运行时的错误信息基本上都能够捕获到。
为了区别不同的异常 , 通常根据异常类型进行区分,这里我们创建一个自定义系统异常。
Spring MVC 在处理请求过程中出现异常信息交由异常处理器进行处理,自定义异常处理器可以实现一个系统的异常处理逻辑。
系统的 dao 、 service 、 controller 出现都通过 throws Exception 向上抛出,最后由 Spring MVC 的前端控制器交由异常处理器进行异常处理。
编写自定义异常实现类,并将实现类配置到 spring 容器中。
Spring MVC 中的异常处理特别有用,运行时的错误信息基本上都能够捕获到。
异常处理:服务器端进行异常补获,直接返回给前端。(如果服务器端代码出了异常)
自定义异常类为了区别不同的异常 , 通常根据异常类型进行区分,这里我们创建一个自定义系统异常。
1)自定义异常类
package com.awb.exception;
/**
* 自定义异常类
*/
public class AWBException extends Exception {
private String errMessage;
public AWBException() {
super();
}
public AWBException( String errMessage) {
super(errMessage);
this.errMessage = errMessage;
}
public String getErrMessage() {
return errMessage;
}
public void setErrMessage(String errMessage) {
this.errMessage = errMessage;
}
}
2)自定义异常处理器(//obj:当前发生异常的地方,包名+类名+方法名(形参))
package com.awb.exception;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.io.Writer;
/**
* 自定义异常处理器
*/
public class CustomHandlerException implements HandlerExceptionResolver {
@Override
public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response,
Object handler, Exception exception) {
// 定义异常信息
String msg;
// 判断异常类型
if (exception instanceof AWBException) {
// 如果是自定义异常,读取异常信息
msg = exception.getMessage();
} else {
// 如果是运行时异常,则取错误堆栈,从堆栈中获取异常信息
Writer out = new StringWriter();
PrintWriter s = new PrintWriter(out);
exception.printStackTrace(s);
msg = out.toString();
}
// 把错误信息发给相关人员,邮件,短信等方式
// TODO
// 返回错误页面,给用户友好页面显示错误信息
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("msg", msg);
modelAndView.setViewName("error");
return modelAndView;
}
}
3)异常处理器配置
<!--spring mvc中的异常处理器配置-->
<!--交由Spring框架,实例化CustomHandlerException,帮助我们创建对象。-->
<bean id="customHandlerException" class="com.awb.exception.CustomHandlerException"/>
4)错误页面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>系统发生异常了!</h1>
<br />
<h1>异常信息</h1>
<br />
<h2>${msg }</h2>
</body>
</html>