目录
????使用原因
????优点
????实现
????自定义一个异常
????异常处理
????测试
使用原因
系统中会有各种各样的,意料之中和意料之外的结果,我们并不能做到完全针对每个异常时刻做出针对性的处理。这时就可以使用异常处理器。
优点
实现
自定义一个异常
public class MyException extends Exception{
private String msg;
@Override
public String getMessage() {
return msg;
}
public MyException(String message) {
this.msg = message;
}
}
msg就是异常的一个内容提示。
重写一个getMessage()方法和构造方法
异常处理
<!--xml配置自定义的常处理器-->
<bean class="com.soft.component.ExceptionHandler"></bean>
package com.soft.component;
import com.soft.exc.MyException;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ExceptionHandler implements HandlerExceptionResolver {
public ModelAndView resolveException(HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse,
Object o, Exception e) {
//只要当前系统出现任何异常(自定义的,非自定义的)都会被传入当前的异常处理器的Exception
//所以就可以当系统出现错误,都会通过一个错误页面进行处理
MyException myException = null;
if(e instanceof MyException){
//如果当前进来的异常就是我们自定义的MyException异常,就直接打印我们自定义的异常中的内容
myException = (MyException)e;
}else {
//如果是其他异常进来,比如数学异常,空指针异常,越界异常等等。。
// 就重新new一个自定义异常
myException = new MyException("其他异常跳转,正在加紧修复中。。。");
}
//将异常信息通过ModeAndView传给前端页面
ModelAndView mv = new ModelAndView();
mv.addObject("msg",myException.getMessage());
mv.setViewName("500");
return mv;
}
}
500页面:
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>抱歉,出错啦。。</title>
</head>
<body>
<h1>非常抱歉</h1>
<hr>
<!-- 通过thymeleaf动态获取异常中的msg内容-->
<span th:text="${msg}">动态内容</span>
</body>
</html>
测试
------->