JPA|springboot个人博客的构建(1)异常处理
工程如下所示:
文章图片
【JPA|springboot个人博客的构建(1)异常处理】
error页面:
错误 - 锐客网 错误
web里面的Controller
package com.mjf.blog.web; import com.mjf.blog.NotFoundException; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; @Controller public class IndexController{@GetMapping("/") public String index(){ //int i=9/0; String blog=null; if (blog==null){ throw new NotFoundException("博客不存在"); //原本跳到NotFoundException这个类,然后通过这个返回404,可是在统一拦截那块,被拦截,所以在拦截那个方法里面添加一个判断条件。 } return "index"; } @GetMapping("/blog") public String blog(){ return "blog"; } }
handler页面:
package com.mjf.blog.handler; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.core.annotation.AnnotationUtils; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; /** * 自定义拦截异常,统一异常处理 */ @ControllerAdvice public class ControllerExceptionHandler { private final Logger logger= LoggerFactory.getLogger(this.getClass()); @ExceptionHandler(Exception.class) //访问哪个路径的问题 public ModelAndView exceptionHandler(HttpServletRequest request,Exception e) throws Exception { ///第一个参数 打印异常的地址,第二个是打印异常的信息 logger.error("Request URL : {}, Exception : {}",request.getRequestURL(),e); //判断 如果前台需要打印404,或者505,就让它通过这个条件来自己打印错误404.html网页。而不是统一异常处理。 if (AnnotationUtils.findAnnotation(e.getClass(), ResponseStatus.class)!=null){ throw e; } ModelAndView mv=new ModelAndView(); mv.addObject("url",request.getRequestURL()); mv.addObject("exception",e); mv.setViewName("error/error"); return mv; }}
推荐阅读
- 一个人的旅行,三亚
- 一个人的碎碎念
- 七年之痒之后
- 异地恋中,逐渐适应一个人到底意味着什么()
- Activiti(一)SpringBoot2集成Activiti6
- 遗憾是生活的常态,但孝顺这件事,我希望每一个人都不留遗憾
- NO.38|NO.38 我不是嫁不出去,而是不想嫁
- SpringBoot调用公共模块的自定义注解失效的解决
- 解决SpringBoot引用别的模块无法注入的问题
- 良心