SpringBoot自定义异常页面与默认异常处理(十二)

一、自定义异常页面

统一的异常页面:

   1,SpringBoot默认情况下,把所有错误都重新定位到/error这个处理路径上,由BasicErrorController类完成处理;

   2,SpringBoot提供了默认的替换错误页面的路径:

以前当我们访问页面404时,自定义页面会出现

若需要自定义页面,则在public下创建error目录,并添加错误页面,如果是freemarker,则在templates创建error页面,添加对应的模板即可。如:

静态错误页面默认结构:

src/

    resources/

       public/

          error/

            404.html

            401.html

            5xx.html

也可以使用模板页面:

src/

    resources/

       templates/

           error/

              404.ftl

              401.ftl

              5xx.ftl

当访问页面出现相应错误时,就会转发到对应的错误页面。

 

二、默认异常处理

项目结构:

1)@ControllerAdvice

     通过使用@ControllerAdvice定义统一的异常处理类,而不是在每个Controller中逐个定义。@ExceptionHandler用来定义函数针对的异常类型。

//如果自定义了500页面,就不能在这里使用该注解,否则出现500时会在该方法处理,不会自动跳转到500,除非自己在这里跳转
@ControllerAdvice
public class ErrorControllerAdvice {
    @ExceptionHandler(Exception.class)
    //handlerMethod可以获取错误的方法类和类名等信息
    public String handlerException(Exception ex, HandlerMethod handlerMethod){
        System.out.println("异常处理");
        System.out.println(ex.getMessage());
        System.out.println(handlerMethod.getBean().getClass());
        System.out.println(handlerMethod.getMethod().getName());
        return "error/500.html";
    }
}

2)错误的Controller类

@Controller
public class FreekMarkerController {

    //@ResponseBody
    @RequestMapping("/hel")
    public String hello(Model model) {
        int i=1/0;
        model.addAttribute("name","java");
        return "hell";
    }
}

3)在public/error下定义500.html页面

4)访问地址localhost/hel

出现页面:

空主题输出:

 

猜你喜欢

转载自blog.csdn.net/qq_37431224/article/details/103901731
今日推荐