zoukankan      html  css  js  c++  java
  • spring boot -thymeleaf-异常处理

    异常流程 :controller-ControllerAdvice-异常解析器-默认的error页面

    1.错误页面error.html:

      程序出现异常会自动跳到error.html里,视频效果,该页面可以使用th:text="${exception}"显示异常信息,但自己测试时,页面成功显示,但异常信息不显示。

    2.@ExceptionHandler注解处理异常(有两个处理同一个异常的方法,则启动报错;同时存在@ControllerAdvice优先于@ControllerAdvice处理异常。

    spring boot 默认情况下会映射到 /error 进行异常处理,但是提示并不十分友好,下面自定义异常处理,提供友好展示。

    3.@ControllerAdvice+.@ExceptionHandler处理异常(同时有两个类,两个类都会加载,对于两个类都有同一个异常方法,最终只会执行其中一个类的方法)

    在Controller中抛出的异常,当没有被catch处理时,GlobalExceptionHandler中定义的处理方法可以起作用,在方法写明注解@ExceptionHandler,并注明其异常类即可。此种方法不仅可以作用于Controller,同样的在DAO层、service层也可,都可以由GlobalExceptionHandler进行处理。此种写法减少代码的入侵,值得推荐。

    如果全部异常处理返回json,那么可以使用 @RestControllerAdvice 代替 @ControllerAdvice ,这样在方法上就可以不需要添加 @ResponseBody。

    在spring 3.2中,新增了@ControllerAdvice 注解,可以用于定义@ExceptionHandler、@InitBinder、@ModelAttribute,并应用到所有@RequestMapping中。

    @ModelAttribute:在Model上设置的值,对于所有被 @RequestMapping 注解的方法中,都可以通过 ModelMap 获取,如下:

    @RequestMapping("/home")
    public String home(ModelMap modelMap) {
        System.out.println(modelMap.get("author"));
    }
    
    //或者 通过@ModelAttribute获取
    
    @RequestMapping("/home")
    public String home(@ModelAttribute("author") String author) {
        System.out.println(author);
    }

    4.配置SimpleMappingExceptionResolver类完成异常处理

    5.自定义HandlerExceptionResolver类处理异常(如果同时定义两个类,只会加载其中一个类

    public class GlobalException2 implements HandlerExceptionResolver {
    
        public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
            ModelAndView modelAndView = new ModelAndView("error");
            if (ex instanceof NullPointerException) {
                modelAndView.addObject("errors","自定义2解析器空指针N"+ex.toString());
            }
  • 相关阅读:
    easyui-lang-zh_CN.js导入后还是英文提示
    MongoDB的备份(mongodump)与恢复(mongorestore)
    mongodb windows下服务安装与卸载
    MongoDB 权限管理 用户名和密码的操作
    Super Hide IP 3.4.7.8允许您以匿名方式进行网上冲浪、 保持隐藏您的 IP 地址
    Delphi IDE下载全地址
    Delphi IDE下载全地址
    Delphi XE2及以后的版本编译后的程序大小问题
    Delphi XE2及以后的版本编译后的程序大小问题
    DevExpress VCL 一键安装工具
  • 原文地址:https://www.cnblogs.com/hongchengshise/p/10533022.html
Copyright © 2011-2022 走看看