日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

springboot異常處理的一點總結

作者:慕白Lee 更新時間: 2023-09-18 編程語言

目錄

一、效果

二、實現

1、自定義一個異常MyException

2、實現類調用

3、Controller

4、統一異常捕獲

5、注意事項

一、效果

想實現的場景是, 

指定的異常直接拋到前端, 

捕獲的異常后log.error(), 前端模糊返回"操作異常"

二、實現

1、自定義一個異常MyException

public class MyException extends RuntimeException {

    private static final long serialVersionUID = -1004916162498956491L;

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

}

2、實現類調用

@Override
    public int add(Demo demo) {
        if (null == demo.getName()) {
            throw new MyException("名稱為空!");
        }
        return demoMapper.add(demo);
    }

3、Controller

    @PostMapping(value = "/add")
    public String add(@RequestBody Demo demo) {
        try {
            demoService.add(demo);
        } catch (MyException e) {
            return Resule.fail(e.getMsg());
        } catch (Exception e) 
            log.error("異常:{}",e)
            return Resule.fail();
        }
        return Resule.success();
    }

4、統一異常捕獲

package com.xx.xx.manage.exception;



/**
 * @author libusi
 */
@Slf4j
@RestControllerAdvice
public class ApplicationExceptionHandler {

    protected static final Logger logger = LoggerFactory.getLogger(ApplicationExceptionHandler.class);


    @Autowired
    public ApplicationExceptionHandler(LogSaveUtil logSaveUtil) {
        this.logSaveUtil = logSaveUtil;
    }


    /**
     * 異常詳細信息
     *
     * @return BaseResponse
     */
    @ExceptionHandler(MyException.class)
    public String msgException(Throwable t) {
        ...
        return Resule.fail();
    }

}

5、注意事項

自定義異常捕獲不到,? 那是因為controller沒有catch MyException,? 或者全局捕獲異常的問題

一般情況下, 不要把未知異常的錯誤信息拋到前端,? 要模糊處理返回

有用請點贊,養成良好習慣!

疑問、交流、鼓勵請留言!


原文鏈接:https://libusi.blog.csdn.net/article/details/127355768

  • 上一篇:沒有了
  • 下一篇:沒有了
欄目分類
最近更新