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. 重学 Java 设计模式:实战工厂方法模式

    作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获!

  2. Angular SPA基于Ocelot API网关与IdentityServer4的身份认证与授权(三)

    在前面两篇文章中,我介绍了基于IdentityServer4的一个Identity Service的实现,并且实现了一个Weather API和基于Ocelot的API网关,然后实现了通过Ocelot ...

  3. js生成一个上限跟下限的随机数

    function sj() { //x上限,y下限 var x = 2000; var y = 1800; var rand = parseInt(Math.random() * (x - y + 1 ...

  4. PHP实现插入100万条数据优化

    第一种方法一条一条执行插入,结果会很慢 <?php header("Content-Type:text/html;charset=utf-8"); date_default_ ...

  5. 转 js自定义事件——Event和CustomEvent

    之前在学习自定义事件时,在MDN的Event.initEvent()页面顶端有写:该特性已从Web标准中删除,虽然一些浏览器目前仍然支持它,但也许会在未来的某个时间停止支持,请尽量不要使用该特性. 作 ...

  6. Unity自定义Log

    有如下两种方式,第一种借助了Unity自身的LogType枚举型:第二种则是纯粹地自己定义: public class Log { public Log(string message, UnityEn ...

  7. Magicodes.IE 2.2发布

    Magicodes.IE 导入导出通用库,支持Dto导入导出以及动态导出,支持Excel.Word.Pdf.Csv和Html.已加入NCC开源组织. Magicodes.IE 2.0发布 Magico ...

  8. 浅谈进程&线程

    学习过操作系统(下面简称OS)的都清楚,计算机计算的核心是CPU,操作系统是计算机资源的管理者 同事也是软硬件之间的接口.为了实现程序的并发,而引入了进程的概念.在传统OS中,进程是个很重要的概念,它 ...

  9. [Firefox附加组件]0004.上下文菜单项

    在我们平常浏览网页是经常要对网页类容进行一些操作处理,如复制,翻译,搜索,打印打印等,今天我们就学习下如何在Firefox中我们如何通过附加组件实现这些操作. 开发步骤 1.终端窗口运行以下命令创建项 ...

  10. SpringBoot系列—简单的邮件系统

    1. 效果发送效果图 2. 邮件开发准备工作 3. springboot引入mail服务 4. 启动应用,开始4种邮件发送测试 1. 效果发送效果图 连续发送了四封邮件:普通文本邮件,带附件的邮件,内 ...