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. redis的哨兵集群,自动切换主从库

    Redis-Sentinel是redis官方推荐的高可用性解决方案,当用redis作master-slave的高可用时,如果master本身宕机,redis本身或者客户端都没有实现主从切换的功能. 而 ...

  2. 汉语拼音转换工具包pypinyin

    #pip install pypinyin汉字转换汉语拼音 from pypinyin import lazy_pinyin,TONE,TONE2,TONE3 str="你知道我是谁吗?&q ...

  3. gulp iconfont

    参考如下网站 https://github.com/hjzheng/CUF_meeting_knowledge_share/tree/master/2015-7-24/gulp-test-iconfo ...

  4. TCO14286 TriangleTriples

    题目链接:https://vjudge.net/problem/TopCoder-14286 知识点: 组合数学.容斥原理 题目大意: 给出 \(A,B,C\),问有多少个有序三元组 \((a,b,c ...

  5. MyBatis——com.mysql.cj.exceptions.InvalidConnectionAttributeException

    报错信息 Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.c ...

  6. thinkphp路由简介和设置使用

    use think\Route; //静态路由 Route::rule('/', 'index/index/index'); Route::rule('test', 'index/index/test ...

  7. winform 数据(双向)绑定 快速更新实体

    写点东西感觉特别累,也已经很久没写了. 最近在做一个winform类型的系统,其涉及到大量的表,有些表又包含大量的字段,所以当添加.更新实体时便会十分的繁琐,一方面:需要把界面上的字段绑定到对应的实体 ...

  8. [Objective-C] 011_数据持久化_NSKeyedArchiver

    在日常开发中对于NSString.NSDictionary.NSArray.NSData.NSNumber这些基本类的数据持久化,可以用属性列表的方法持久化到.plist 文件中.但是一些我们自定义的 ...

  9. 选择器&隔行换色

    选择器的使用理解为:执行jQuery核心函数,传入选择器的字符串    $( ... ) 基本选择器 <!DOCTYPE html> <html> <head> & ...

  10. 容器技术之Dockerfile (一)

    在前边的随笔中我们聊到了docker的基本命令,镜像,网络,存储卷以及基于现有容器制做docker镜像,相关随笔可参考https://www.cnblogs.com/qiuhom-1874/categ ...