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. JavaScript(对象的创建模式)

    JavaScript和其他语言略有不同,在JavaScript中,引用数据类型都是对象(包括函数).不过,在JavaScript中并没有“类”的概念,这决定了在JavaScript中不能直接来定义“类 ...

  2. javaScript(原型链)

    在了解javaScript的原型链之前,我们得先来看一下原型是什么. 在javaScript中,所有的函数都会有着一个特别属性:prototype(显示原型属性):当我们运行如下代码时: functi ...

  3. MySQL(7)— 索引

    七.索引 MySQL官方对索引的定义为:索引(Index)是帮助 MySQL 高效 获取数据的数据结构. 7-1.索引的分类 主键索引 (primary key) 唯一的标识,主键不可重复,只能有一个 ...

  4. ShoneSharp语言(S#)的设计和使用介绍系列(9)— 一等公民“函数“爱炫巧

    ShoneSharp语言(S#)的设计和使用介绍 系列(9)— 一等公民“函数“爱炫巧 作者:Shone 声明:原创文章欢迎转载,但请注明出处,https://www.cnblogs.com/Shon ...

  5. excel导入mysql数据

    excel加载mysql数据 1.第一步,选择从mysql导入数据 2.单击会出现弹框: 3.可能有的同学的,这里缺少插件,例如: 4.去下载 这个 插件安装即可.https://dev.mysql. ...

  6. Elasticsearch如何有惊无险地入门,我是用心的

    学习真的是一件令人开心的事情,上次分享了 Redis 入门的文章后,收到了很多小伙伴的鼓励,比如说:"哎呀,不错呀,二哥,通俗易懂,十分钟真的入门了".瞅瞅,瞅瞅,我决定再接再厉, ...

  7. 百度前端技术学院2018笔记 之 利用 CSS animation 制作一个炫酷的 Slider

    前言 题目地址 利用 CSS animation 制作一个炫酷的 Slider 思路整理 首先页面包含三种东西 一个是type为radio的input其实就是单选框 二是每个单选框对应的label 三 ...

  8. Redis详解(十)------ 从零开始搭建集群

    在上一篇博客我们介绍了------Redis哨兵(Sentinel)模式,哨兵模式主要是解决高可用问题,在master节点宕机时,slave节点能够自动切换成为master节点 本篇博客我们来介绍Re ...

  9. Rocket - diplomacy - enumerateMask

    https://mp.weixin.qq.com/s/s3hr5JJX2_pwNgdu8WqV0Q   介绍enumerateMask的实现.(仅供理解,非严谨证明)   ​​   1. 基本定义   ...

  10. Source Insight无限试用期修改方法

    修改路径:C:\ProgramData\Source Insight\4.0\si4.lic 字段: Date="2020-01-20" Expiration="2020 ...