最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringMVC異常處理知識點總結(jié)

 更新時間:2019年10月17日 08:29:06   作者:魔有追求  
在本篇文章里小編給大家整理的是關(guān)于SpringMVC異常處理相關(guān)知識點內(nèi)容,需要的朋友們學(xué)習(xí)下。
  • ResultCode
  • CommonCode
  • UserCode
  • CustomException
  • ExceptionCatch
<parent>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-parent</artifactId>
  <version>2.1.9.RELEASE</version>
  <relativePath/> <!-- lookup parent from repository -->
</parent>
<dependencies>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
  </dependency>
</dependencies>

統(tǒng)一異常處理

@ControllerAdvice

@ExceptionHandler

@ResponseBody

package com.mozq.mybatisplus.mybatisplus01.exception;

import com.mozq.mybatisplus.mybatisplus01.model.CommonCode;
import com.mozq.mybatisplus.mybatisplus01.model.Result;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

@ControllerAdvice
public class ExceptionCatch {

  @ExceptionHandler(Exception.class)
  @ResponseBody
  public Result handleException(Exception e){
    return Result.of(CommonCode.SERVER_ERROR);
  }

  @ExceptionHandler(CustomException.class)
  @ResponseBody
  public Result handleException(CustomException e){
    return Result.of(e.getResultCode());
  }
}
package com.mozq.mybatisplus.mybatisplus01.exception;

import com.mozq.mybatisplus.mybatisplus01.model.ResultCode;

public class CustomException extends RuntimeException {
  private ResultCode resultCode;

  public CustomException(ResultCode resultCode){
    super("錯誤碼:" + resultCode.code() + "錯誤消息:" + resultCode.message());
    this.resultCode = resultCode;
  }

  public ResultCode getResultCode(){
    return resultCode;
  }
}

異常處理測試

@RestController
@RequestMapping("/demo")
public class DemoController {

  //單個參數(shù)非空校驗,使用@RequestParam
  @RequestMapping("/get")
  public String getName(@RequestParam String name){
    return name;
  }

  /*
  public Result myCustomException(boolean flag)
  不傳參數(shù)默認(rèn)false
  0-false 1-true 其他數(shù)字拋異常 MethodArgumentTypeMismatchException
  正確方式:
  localhost:8080/demo/myCustomException?flag=1
  localhost:8080/demo/myCustomException?flag=true
  */
  @RequestMapping("/myCustomException")
  public Result myCustomException(boolean flag){
    if(flag){
      throw new CustomException(UserCode.USER_NOT_EXIST);
    }
    return Result.ok();
  }
}

統(tǒng)一響應(yīng)結(jié)果

package com.mozq.mybatisplus.mybatisplus01.model;

import lombok.Data;

import java.util.LinkedHashMap;

@Data
public class Result extends LinkedHashMap {
  private static final String SUCCESS = "success";
  private static final String CODE = "code";
  private static final String MESSAGE = "message";
  private static final String RESULT = "result";

  public static Result of(ResultCode resultCode){
    Result R = new Result();
    R.put(SUCCESS, resultCode.success());
    R.put(CODE, resultCode.code());
    R.put(MESSAGE, resultCode.message());
    return R;
  }

  public static Result ok(){
    return Result.of(CommonCode.SUCCESS);
  }

  public static Result okWithResult(Object data){
    Result R = Result.of(CommonCode.SUCCESS);
    R.put(RESULT, data);
    return R;
  }

  public static Result fail(){
    return Result.of(CommonCode.FAIL);
  }
}

響應(yīng)狀態(tài)碼

package com.mozq.mybatisplus.mybatisplus01.model;

public interface ResultCode {
  boolean success();
  String code();
  String message();
}
package com.mozq.mybatisplus.mybatisplus01.model;

public enum CommonCode implements ResultCode {
  SUCCESS(true, "000000", "處理成功"),
  FAIL(true, "000001", "處理失敗"),
  INVALID_PARAM(false, "100000", "無效的參數(shù)"),
  SERVER_ERROR(false, "999999", "系統(tǒng)忙,請稍后重試");

  private boolean success;
  private String code;
  private String message;
  CommonCode(boolean success, String code, String message){
    this.success = success;
    this.code = code;
    this.message = message;
  }

  @Override
  public boolean success() {
    return success;
  }

  @Override
  public String code() {
    return code;
  }

  @Override
  public String message() {
    return message;
  }
}
package com.mozq.mybatisplus.mybatisplus01.model;

public enum UserCode implements ResultCode {

  USER_USERNAME_ALREADY_EXIST(false, "200000", "用戶名已經(jīng)存在"),
  USER_TELEPHONE_ALREADY_USED(false, "200001", "電話號碼已經(jīng)存在"),
  USER_NOT_EXIST(false, "200002", "用戶不存在");


  private boolean success;
  private String code;
  private String message;
  UserCode(boolean success, String code, String message){
    this.success = success;
    this.code = code;
    this.message = message;
  }

  @Override
  public boolean success() {
    return success;
  }

  @Override
  public String code() {
    return code;
  }

  @Override
  public String message() {
    return message;
  }
}

以上就是本次介紹的關(guān)于SpringMVC異常處理的相關(guān)知識點,感謝大家的學(xué)習(xí)和對腳本之家的支持。

相關(guān)文章

  • java 全角半角字符轉(zhuǎn)換如何實現(xiàn)

    java 全角半角字符轉(zhuǎn)換如何實現(xiàn)

    在java中可能會用到過全角半角字符轉(zhuǎn)換問題,于是網(wǎng)上搜索整理了一下,曬出來和大家分享,希望可以幫助你們
    2012-12-12
  • Assert.assertEquals的使用方法及注意事項說明

    Assert.assertEquals的使用方法及注意事項說明

    這篇文章主要介紹了Assert.assertEquals的使用方法及注意事項說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • Java線程Dump分析工具jstack解析及使用場景

    Java線程Dump分析工具jstack解析及使用場景

    這篇文章主要介紹了Java線程Dump分析工具jstack解析及使用場景,具有一定借鑒價值,需要的朋友可以參考下
    2018-01-01
  • Spring Boot修改內(nèi)置Tomcat默認(rèn)端口號的示例

    Spring Boot修改內(nèi)置Tomcat默認(rèn)端口號的示例

    本篇文章主要介紹了Spring Boot修改內(nèi)置Tomcat端口號的示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • Java常用正則表達(dá)式驗證工具類RegexUtils.java

    Java常用正則表達(dá)式驗證工具類RegexUtils.java

    相信大家對正則表達(dá)式一定都有所了解和研究,這篇文章主要為大家分享了Java 表單注冊常用正則表達(dá)式驗證工具類,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • SpringBoot使用@Autowired為多實現(xiàn)的接口注入依賴

    SpringBoot使用@Autowired為多實現(xiàn)的接口注入依賴

    這篇文章主要介紹了SpringBoot使用@Autowired為多實現(xiàn)的接口注入依賴,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • synchronized?和?Lock?的異同點(如何讓選擇)

    synchronized?和?Lock?的異同點(如何讓選擇)

    這篇文章主要介紹了?synchronized和Lock的異同點(如何讓選擇),文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-09-09
  • java實現(xiàn)題目以及選項亂序的方法實例

    java實現(xiàn)題目以及選項亂序的方法實例

    這篇文章主要給大家介紹了關(guān)于java實現(xiàn)題目以及選項亂序的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • 如何用idea編寫并運行第一個spark scala處理程序

    如何用idea編寫并運行第一個spark scala處理程序

    詳細(xì)介紹了如何使用IntelliJ IDEA創(chuàng)建Scala項目,包括配置JDK和Scala SDK,添加Maven支持,編輯pom.xml,并創(chuàng)建及運行Scala程序,這為Scala初學(xué)者提供了一個基礎(chǔ)的項目搭建和運行指南
    2024-09-09
  • 顯示SonarQube私有項目徽章方案流程

    顯示SonarQube私有項目徽章方案流程

    這篇文章主要為大家介紹了如何顯示SonarQube私有項目徽章方案的流程,sonarQube目前不支持私有項目的徽章圖片獲取,這個問題早在?2018年就在sonar社區(qū)里有過激烈的討論,至今無果,只能自己尋求一種可以快速實施的方案
    2022-02-02

最新評論

彰武县| 揭东县| 临漳县| 开远市| 安岳县| 扬州市| 东台市| 宁安市| 通海县| 宜丰县| 伊春市| 泌阳县| 巨野县| 宜兰市| 新化县| 丹东市| 丽江市| 南涧| 台前县| 通辽市| 洛宁县| 金阳县| 轮台县| 兰溪市| 泸定县| 汉源县| 洱源县| 镇巴县| 广安市| 多伦县| 平泉县| 台安县| 黄骅市| 白沙| 珲春市| 横峰县| 名山县| 光山县| 揭西县| 义马市| 如皋市|