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

SpringBoot全局異常捕獲參數(shù)以及參數(shù)異常的解決方案

 更新時間:2025年05月09日 08:54:27   作者:小楊同學(xué)~  
這篇文章主要介紹了SpringBoot全局異常捕獲參數(shù)以及參數(shù)異常的解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

現(xiàn)在比較常用的方式是給前端返回JSON,但是有些時候程序出現(xiàn)一些異常,導(dǎo)致前端頁面報錯不是很友好,所以就需要對項目進行全局的異常捕獲,返回給前端固定的格式,進行友好的處理!

話不多說,開始寫代碼

一.全局異常捕獲

1.1 全局捕獲

@Slf4j
@RestControllerAdvice(annotations = {RestController.class})
public class BaseExceptionHandler {

    /**
     * <p>
     *       全局Base異常處理
     * </p>
     * @version 1.0.0
     * @author Dylan
     * @since 2020/2/27
     * @param e
     */
    @ExceptionHandler({BaseException.class,BusinessException.class})
    @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
    public R customExceptionHandler(BaseException e) {
        sysLog();
        log.info("自定義異常 ---> {}",e);
        return R.error(e.getCode(),e.getMsg());
    }

    /**
     * <p>
     *       其他類型的異常處理
     * </p>
     * @version 1.0.0
     * @author Dylan
     * @since 2020/2/27
     * @param e
     */
    @ExceptionHandler({Exception.class})
    @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
    public R customExceptionHandler(Exception e) {
        sysLog();
        log.info("未知的運行異常 ---> ",e);
        return R.error();
    }

    /**
     * <p>
     *       參數(shù)異常處理
     * </p>
     * @version 1.0.0
     * @author Dylan-haiji
     * @since 2020/2/28
     * @param exception
     */
    @ExceptionHandler(value= MethodArgumentNotValidException.class)
    public R methodNotValidHandler(MethodArgumentNotValidException exception) {
        sysLog();
        log.info("參數(shù)異常 ---> ",exception);
        List<FieldError> fieldErrors = exception.getBindingResult().getFieldErrors();
        return  R.error(fieldErrors.get(0).getDefaultMessage());
    }

    /**
     * <p>
     *       統(tǒng)一日志輸出
     * </p>
     * @version 1.0.0
     * @author Dylan-haiji
     * @since 2020/2/28
     * @param
     * @return void
     */
    private void sysLog(){
        HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
        String requestUri = request.getRequestURI();
        log.info("異常  method ---> {}",request.getMethod());
        log.info("異常 requestURI ---> {}",requestUri);
    }
    
}

1.2 基礎(chǔ)異常

public class BaseException extends RuntimeException{
    private Integer code;
    private String msg;

    public BaseException(Integer code, String msg){
        this.code = code;
        this.msg = msg;
    }

    public BaseException( String msg){
        this.code = 500;
        this.msg = msg;
    }

}

1.3 業(yè)務(wù)參數(shù)異常

public class BusinessException extends BaseException {

    public BusinessException(Integer code, String msg) {
        super(code, msg);
    }

    public BusinessException() {
        super(ConstantUtils.BUSINESS_DATA);
    }

    public BusinessException(String msg) {
        super(msg);
    }

}

二.驗證

通過上面的配置,我們可以進行全局的異常捕獲,接下來我們以參數(shù)驗證為例進行驗證是否可用!

2.1 定義實體類

public class Demo implements Serializable {
    
    @NotBlank(message = "請選擇時間")
    private String endDate;
   
    @NotBlank(message = "請選擇范圍類型")
    private String value;

}

2.2 定義接口

 @PostMapping(value = "list")
 public R getOverView(@RequestBody @Valid Demo demo){
    return R.ok();
 }

這是我們調(diào)用接口,直傳一個參數(shù)!達到了我們的預(yù)期效果

當(dāng)然我們處理業(yè)務(wù)的時候也可進行異常的拋出,這樣也會進行全局的捕獲!

這樣的接口返回就非常的友好了! 

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java如何實現(xiàn)遠程文件下載到本地目錄

    Java如何實現(xiàn)遠程文件下載到本地目錄

    本文介紹了如何使用Java來實現(xiàn)遠程文件的下載功能,主要通過HTTPS路徑下載文件到本地目錄,詳細介紹了相關(guān)代碼和測試步驟,并提供了實際案例供參考,本文旨在幫助需要實現(xiàn)文件下載功能的開發(fā)者快速掌握核心技術(shù)
    2024-10-10
  • Spring Boot Test詳解

    Spring Boot Test詳解

    Spring Test與JUnit等其他測試框架結(jié)合起來,提供了便捷高效的測試手段,而Spring Boot Test 是在Spring Test之上的再次封裝,增加了切片測試,增強了mock能力,這篇文章主要介紹了Spring Boot Test介紹,需要的朋友可以參考下
    2024-02-02
  • Java Arrays.fill()的具體使用

    Java Arrays.fill()的具體使用

    本文主要介紹了Java Arrays.fill()的具體使用,更好地理解Arrays.fill()方法的用法以及在實際應(yīng)用中如何使用它,感興趣的可以了解一下
    2023-09-09
  • 使用String轉(zhuǎn)換到Map結(jié)構(gòu)

    使用String轉(zhuǎn)換到Map結(jié)構(gòu)

    這篇文章主要介紹了使用String轉(zhuǎn)換到Map結(jié)構(gòu),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Java內(nèi)部類的繼承(全)

    Java內(nèi)部類的繼承(全)

    這篇文章主要介紹了Java內(nèi)部類的繼承,大家都知道JAVA內(nèi)部類的構(gòu)造器必須連接指向其外圍類對象的引用,所以在繼承內(nèi)部類的時候,需要在導(dǎo)出類的構(gòu)造器中手動加入對基類構(gòu)造器的調(diào)用,需要的朋友可以參考下
    2015-07-07
  • Java并發(fā)LinkedBlockingQueue源碼分析

    Java并發(fā)LinkedBlockingQueue源碼分析

    這篇文章主要為大家介紹了Java并發(fā)LinkedBlockingQueue源碼分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-02-02
  • Java struts2 package元素配置及實例解析

    Java struts2 package元素配置及實例解析

    這篇文章主要介紹了Java struts2 package元素配置及實例解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-11-11
  • SpringBoot連接MySql數(shù)據(jù)庫的原理及代碼示例

    SpringBoot連接MySql數(shù)據(jù)庫的原理及代碼示例

    SpringBoot是一款流行的Java開發(fā)框架,它可以輕松地連接各種類型的數(shù)據(jù)庫,包括關(guān)系型數(shù)據(jù)庫和非關(guān)系型數(shù)據(jù)庫,本文將介紹SpringBoot是如何連接數(shù)據(jù)庫的,包括其原理和代碼示例,需要的朋友可以參考下
    2023-07-07
  • JavaWeb 獲取應(yīng)用根路徑的實踐指南

    JavaWeb 獲取應(yīng)用根路徑的實踐指南

    本文全面介紹JavaWeb中獲取應(yīng)用根路徑的多種方法,涵蓋Servlet、JSP、SpringBoot等場景,強調(diào)相對路徑與物理路徑的合理使用及安全性驗證,確保不同環(huán)境下的路徑處理一致性和正確性,感興趣的朋友一起看看吧
    2025-08-08
  • Spring容器-BeanFactory和ApplicationContext使用詳解

    Spring容器-BeanFactory和ApplicationContext使用詳解

    這篇文章主要為大家介紹了Spring容器-BeanFactory和ApplicationContext的使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-04-04

最新評論

清原| 合山市| 桃源县| 五原县| 塔河县| 海城市| 正定县| 内丘县| 三江| 海淀区| 建始县| 永定县| 盐山县| 峨边| 沐川县| 新和县| 孟津县| 柞水县| 安福县| 邻水| 阿拉善左旗| 皋兰县| 丰台区| 莫力| 香港 | 梅河口市| 罗源县| 宝兴县| 广东省| 宁远县| 临安市| 黑龙江省| 凉山| 潍坊市| 齐齐哈尔市| 额尔古纳市| 宁河县| 墨竹工卡县| 抚宁县| 苏尼特右旗| 桂平市|