背??景:我个人也是边学边做,难免有疏漏之处。不对的地方希望朋友们多多提醒。技术栈:springBoot2.5.3Mybatis-plusthymeleafmysql本博客简单记录一下自己的学习过程。如果后面做一个简单的demo,会把细节整理出来发布。推荐一个SpringBoot基础教程和实例:https://github.com/javastacks/spring-boot-best-practice个人对异常处理的粗略学习和理解,我把异常错误分为三种,4xx,5xx,error(custom)404和500常用来响应404(notfound)服务器找不到请求的网页服务器内部错误服务器遇到错误无法完成请求在templates文件下创建404.html和500.html如果你用error.html创建4xx.html和5xx.html,那么当找不到页面或者程序内部出错时,SpringBoot会自动匹配这两个页面。具体的源码这里就不分析了。如果你有兴趣,你可以去研究。“当我想将错误信息返回到我的自定义页面时,我该如何写?”我们自上而下的思考:当我们访问页面的时候,无论是页面出现错误还是找不到,我们是否都要去它那里请求Url,我们如何处理这个请求?这时候我们自然而然的想到了拦截器,于是我们编写了ControllerExceptionHandler类来专门拦截所有的异常请求。我们处理异常后,顺其自然,或者返回到我们需要的自定义页面。这就满足了我们上面的要求。需要的技术点:@ControllerAdvice与@ExceptionHandler注解结合使用。当controller层抛出异常时,可以统一处理异常,指定返回的json格式或者跳转到指定的错误页面等。@ExceptionHandler(Exception.class)//表示捕获所有异常。ModelAndView其实有两个作用,一个是指定返回页面,另一个是在返回页面打印的同时添加属性,通过Logger获取相关的异常信息://Getexceptioninformationlogger.error(()->{returnString.format("请求URL:%s,Exception:%s",request.getRequestURL(),e);},e);这里走了一些弯路,小伙子自己走的窄,导游包错了
