目录
🌱使用原因
🌳优点
🌱实现
🌳自定义一个异常
🌳异常处理
🌳测试
使用原因
系统中会有各种各样的,意料之中和意料之外的结果,我们并不能做到完全针对每个异常时刻做出针对性的处理。这时就可以使用异常处理器。
优点
实现
自定义一个异常
public class MyException extends Exception{private String msg;@Overridepublic 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>
测试
------->