SpringBoot配置系统全局异常映射处理

SpringBoot配置系统全局异常映射处理

目录

          一、异常分类 

          这里的异常分类从系统处理异常的角度看,主要分类两类:业务异常和系统异常。

          1、业务异常

          业务异常主要是一些可预见性异常,处理业务异常,用来提示用户的操作,提高系统的可操作性。

          常见的业务异常提示:
          1)请输入xxx
          2)xxx不能为空
          3)xxx重复,请更换

          2、系统异常

          系统异常主要是一些不可预见性异常,处理系统异常,可以让展示出一个友好的用户界面,不易给用户造成反感。如果是一个金融类系统,在用户界面出现一个系统异常的崩溃界面,很有可能直接导致用户流失。

          常见的系统异常提示:
          1)页面丢失404
          2)服务器异常500

          二、解决应用启动后404界面

          1、引入页面Jar包

          <dependency>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter-thymeleaf</artifactId>
          </dependency>

          2、自定义首页接口

          import org.springframework.stereotype.Controller;
          import org.springframework.ui.ModelMap;
          import org.springframework.web.bind.annotation.RequestMapping;
          @Controller
          public class IndexController {
              @RequestMapping("/")
              public String index(ModelMap modelMap) {
                  modelMap.addAttribute("name","知了一笑") ;
                  return "index";
              }
          }

          3、首页界面

          <!DOCTYPE html>
          <html>
          <head lang="en">
              <meta charset="UTF-8" />
              <title></title>
          </head>
          <body>
          <h1 th:text="${name}"></h1>
          </body>
          </html>

          4、运行效果

          三、SpringBoot2.0中异常处理 

          1、项目结构图

          2、自定义业务异常类

          public class ServiceException extends Exception {
              public ServiceException (String msg){
                  super(msg);
              }
          }

          3、自定义异常描述对象

          public class ReturnException {
              // 响应码
              private Integer code;
              // 异常描述
              private String msg;
              // 请求的Url
              private String url;
              // 省略 get set 方法
          }

          4、统一异常处理格式

          1)两个基础注解
          @ControllerAdvice 定义统一的异常处理类
          @ExceptionHandler 定义异常类型对应的处理方式
          2)代码实现

          import org.springframework.web.bind.annotation.ControllerAdvice;
          import org.springframework.web.bind.annotation.ExceptionHandler;
          import org.springframework.web.bind.annotation.ResponseBody;
          import org.springframework.web.servlet.ModelAndView;
          import javax.servlet.http.HttpServletRequest;
          @ControllerAdvice
          // 异常以Json格式返回 等同 ExceptionHandler + ResponseBody 注解
          // @RestControllerAdvice
          public class HandlerException {
              /**
               * 自定义业务异常映射,返回JSON格式提示
               */
              @ExceptionHandler(value = ServiceException.class)
              @ResponseBody
              public ReturnException handler01 (HttpServletRequest request,ServiceException e){
                  ReturnException returnException = new ReturnException() ;
                  returnException.setCode(600);
                  returnException.setMsg(e.getMessage());
                  returnException.setUrl(String.valueOf(request.getRequestURL()));
                  return returnException ;
              }
              /**
               * 服务异常
               */
              @ExceptionHandler(value = Exception.class)
              public ModelAndView handler02 (HttpServletRequest request,Exception e){
                  ModelAndView modelAndView = new ModelAndView() ;
                  modelAndView.addObject("ExeMsg", e.getMessage());
                  modelAndView.addObject("ReqUrl", request.getRequestURL());
                  modelAndView.setViewName("/exemsg");
                  return modelAndView ;
              }
          }

          5、简单的测试接口

          @Controller
          public class ExeController {
              /**
               *  {
               *    "code": 600,
               *    "msg": "业务异常:ID 不能为空",
               *    "url": "http://localhost:8003/exception01"
               *  }
               */
              @RequestMapping("/exception01")
              public String exception01 () throws ServiceException {
                  throw new ServiceException("业务异常:ID 不能为空");
              }
          
              @RequestMapping("/exception02")
              public String exception02 () throws Exception {
                  throw new Exception("出现异常,全体卧倒");
              }
          }

          四、源代码地址 

          GitHub:知了一笑
          https://github.com/cicadasmile/spring-boot-base

          以上就是SpringBoot配置系统全局异常映射处理的详细内容,更多关于SpringBoot 异常映射处理的资料请关注趣讯吧其它相关文章!

          发布于 2021-06-20 09:25:08
          收藏
          分享
          海报
          0 条评论
          173
          上一篇:Android基于OpenCV实现图像脱色 下一篇:解析高可用Redis服务架构分析与搭建方案
          目录

            0 条评论

            本站已关闭游客评论,请登录或者注册后再评论吧~

            忘记密码?

            图形验证码