sprinboot使用自定义注解

  1. 创建自定义异常类,继承RuntimeException

    public class MyException extends RuntimeException {
      private int code; //异常状态码
      private String message; //异常信息
      private String descinfo;   //描述
      /**
        * @param code 状态
        * @param message 信息
        * @param descinfo 错误,描述!
        */
      public MyException(int code, String message,String descinfo) {
          this.code = code;
          this.message = message;
          this.descinfo = descinfo;
    }
      public MyException() {

      }

      public String getDescinfo() {
          return descinfo;
      }

      public void setDescinfo(String descinfo) {
          this.descinfo = descinfo;
      }

      public int getCode() {
          return code;
      }

      public void setCode(int code) {
          this.code = code;
      }

      public String getMessage() {
          return message;
      }

      public void setMessage(String message) {
          this.message = message;
      }


    }
  2. 创建ControllerAdvice 使用boot为我们提供的@ControllerAdvice注解和@ExceptionHandler来实现对全局异常的捕抓 返回信息为json

    @ControllerAdvice //控制器增强 配合ExceptionHandler实现全局捕抓异常
    @Slf4j
    public class MyControllerAdvice {
      @ExceptionHandler(value = MyException.class)
      @ResponseBody
      public Map exceptionHandler(MyException me) {
          Map<String,Object> map = new HashMap<String,Object>();
          map.put("code",me.getCode());
          map.put("message",me.getMessage());
          //打印日志信息
          log.info("捕抓到异常信息->>"+me.getDescinfo());
          return map;
      }
  3. 使用自定义注解

    Map<String, Object> map = new HashMap<>();
          UsernamePasswordToken token = new UsernamePasswordToken(name,password);
          Subject subject = SecurityUtils.getSubject();
          try {
              subject.login(token);
              map.put("code",0);
              map.put("message","登录成功!");
              return map;
          } catch (UnknownAccountException e) {//用户名不存在
              throw new MyException(-1,"用户名不存在!","用户名不存在");
          }catch (IncorrectCredentialsException e) {//账号或者密码不正确
              throw new MyException(-1,"账号或密码错误!","账号或者密码不正确");
          }catch (LockedAccountException e) {//限制登录
              throw new MyException(-1,"该账号已经被限制登录请联系管理员!","该账号已经限制登录了!");
          }catch (Exception e) {
              throw new MyException(-1,"未知异常","登录出现了异常->>"+e.getMessage());
          }

    这样就完成了自定义异常的处理 自己动动手试试吧 >_<

springboot使用自定义异常的更多相关文章

  1. Springboot的异常处理与自定义异常

    园友们好,元旦很快就到来了,提前祝各位园友们元旦快乐,今天给大家分享一个工作中必用一个知识点,就是使用枚举构建自定义异常并应用于springboot的异常处理器.开始之前我先把这个案例的结构大致说明一 ...

  2. springboot自定义异常

    SpringBoot自定义异常以及异常处理 在web项目中,我们可能需要给前端返回不同的提示码.例如:401表示没有权限,500代表位置异常,200代表请求成功等.但是这些提示码远远不能满足我们返回给 ...

  3. springboot自定义异常视图

    一.源码分析 先看源码再写自己的自定义异常视图         resolveErrorView()函数首先调用了一个返回ModelAndView的函数,该函数所需的参数是一个状态码的字符串,和一个m ...

  4. springboot自定义异常数据

    一.源码分析 自定义异常数据之前我们先看看一下源码             上述代码意思是如果你没有提供就使用springboot提供的类     这是springboot提供的异常属性类,我们想要自 ...

  5. 源码剖析Springboot自定义异常

    博主看到新服务是封装的自定义异常,准备入手剖析一下,自定义的异常是如何进行抓住我们请求的方法的异常,并进行封装返回到.废话不多说,先看看如何才能实现封装异常,先来一个示例: @ControllerAd ...

  6. springBoot 全局异常方式处理自定义异常 @RestControllerAdvice + @ExceptionHandler

    前言 本文讲解使用 @ControllerAdvice + @ExceptionHandler 进行全局的 Controller 层异常处理,可以处理大部分开发中用到的自自定义业务异常处理了,再也不用 ...

  7. springboot自定义异常页面

    废话不多,直接开始. 项目目录: 说明:springboot 静态文件放在static目录中,如images中放的图片:templates目录下error中存放的是错误页面,如500.html代表50 ...

  8. SpringBoot配置全局自定义异常

    不同于传统集中时Springmvc 全局异常,具体查看前面的章节https://www.cnblogs.com/zwdx/p/8963311.html 对于springboot框架来讲,这里我就介绍一 ...

  9. SpringBoot学习11:springboot异常处理方式1(自定义异常页面)

    SpringBoot 默认的处理异常的机制:SpringBoot 默认的已经提供了一套处理异常的机制.一旦程序中出现了异常 SpringBoot 会向/error 的 url 发送请求.在 sprin ...

随机推荐

  1. ol,li,ul,dl,dt,dd

    块级元素div尽量少用,其实和table一样,嵌套越少越好,它也是会影响速度的! ol 有序列表. <ol> <li>……</li> <li>……< ...

  2. [前端开发]Vue mixin

    两个非常相似的组件,他们的基本功能是一样的,但他们之间又存在着足够的差异性,此时的你就像是来到了一个分岔路口:我是把它拆分成两个不同的组件呢?还是保留为一个组件,然后通过props传值来创造差异性从而 ...

  3. Web前端:2、盒模型的组成

    在HTML中,若想要实心划分区域,则:1.添加标签:2.对标签设置尺寸(宽高) 但只要是添加了一个元素(标签),就会在页面中生成一个盒子,不同元素产生的盒子模型可能不同,这取决于它CSS的displa ...

  4. Spring Boot集成Shrio实现权限管理

    Spring Boot集成Shrio实现权限管理   项目地址:https://gitee.com/dsxiecn/spring-boot-shiro.git   Apache Shiro是一个强大且 ...

  5. 飞机调度 Now or Later? LA 3211 (2-SAT问题)

    洛谷题目传送门 题目描述 有n架飞机需要着陆.每架飞机都可以选择“早着陆”和“晚着陆”两种方式之一,且必须选择一种.第i架飞机的早着陆时间为Ei,晚着陆时间为Li,不得在其他时间着陆.你的任务是为这些 ...

  6. 我的第一个jQuery插件开发(日期选择器,datePicker),功能还不完善,但用于学习参考已经足够了。

    一.学习jQuery插件开发网上的帖子很多,插件开发的方式也有好几种,现在推荐一个帖子讲述的特别好,我也是这篇文张的基础上学习的. 参考:http://www.cnblogs.com/ajianbey ...

  7. burpsuite 关于部分https抓包失败原因

    没导入证书 burpsuite生成证书 der格式,名字随便取,一路next  firefox浏览器导入 导入,勾选信任证书ok,重启浏览器  还有你要勾选这里,确保所有流量都走你的代理 ps:遇到浏 ...

  8. wavenet重要概念

    带洞因果卷积 https://img-blog.csdn.net/20181021210509222?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dl ...

  9. 【HBase】知识小结+HMaster选举、故障恢复、读写流程

    1:什么是HBase HBase是一个高可靠性,高性能,面向列,可伸缩的分布式数据库,提供海量数据存储功能,一个结构化的分布式存储系统,不同于一般的关系型数据库,它适合半结构化和非结构化数据存储. 2 ...

  10. Java实现蓝桥杯算法提高P0102

    算法提高 P0102 时间限制:1.0s 内存限制:256.0MB 提交此题 用户输入三个字符,每个字符取值范围是0-9,A-F.然后程序会把这三个字符转化为相应的十六进制整数,并分别以十六进制,十进 ...