springboot使用自定義異常


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());
          }

     

    這樣就完成了自定義異常的處理 自己動動手試試吧 >_<


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM