成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

java springboot 全局異常處理

Pines_Cheng / 2787人閱讀

摘要:定義全局返回狀態(tài)響應(yīng)碼響應(yīng)結(jié)果成功失敗響應(yīng)信息響應(yīng)數(shù)據(jù)數(shù)據(jù)總數(shù)定義全局成功失敗未認(rèn)證簽名錯(cuò)誤未登錄接口不存在服務(wù)器內(nèi)部錯(cuò)誤定義返回工具類定義全局異常處理類測(cè)試服務(wù)器發(fā)生錯(cuò)誤,請(qǐng)聯(lián)系管理員結(jié)果服務(wù)器發(fā)生錯(cuò)誤,請(qǐng)聯(lián)系管理員代碼

定義全局返回result

public class Result {

    /**
     * 狀態(tài)響應(yīng)碼
     */
    private int code;

    /**
     * 響應(yīng)結(jié)果 成功/失敗
     */
    private boolean success;

    /**
     * 響應(yīng)信息
     */
    private String message;

    /**
     * 響應(yīng)數(shù)據(jù)
     */
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private Object data;

    /**
     * 數(shù)據(jù)總數(shù)
     */
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private Long totalCount;

    public Result setCode(ResultCode resultCode) {
        this.code = resultCode.code();
        return this;
    }

    public int getCode() {
        return code;
    }

    public boolean isSuccess() {
        return success;
    }

    public Result setSuccess(boolean success) {
        this.success = success;
        return this;
    }

    public String getMessage() {
        return message;
    }

    public Result setMessage(String message) {
        this.message = message;
        return this;
    }

    public Object getData() {
        return data;
    }

    public Result setData(Object data) {
        this.data = data;
        return this;
    }

    public Long getTotalCount() { return totalCount;}

    public Result setTotalCount(Long totalCount) {
        this.totalCount = totalCount;
        return this;
    }

}

定義全局resultCode

public enum ResultCode {

    SUCCESS(200),//成功
    FAIL(400),//失敗
    UNAUTHORIZED(401),//未認(rèn)證(簽名錯(cuò)誤) 未登錄
    NOT_FOUND(404),//接口不存在
    INTERNAL_SERVER_ERROR(500);//服務(wù)器內(nèi)部錯(cuò)誤


    private final int code;

    ResultCode(int code) {
        this.code = code;
    }

    public int code() {
        return code;
    }

}

定義返回工具類

@Slf4j
public class ReturnUtils {

    private static final String DEFAULT_SUCCESS_MESSAGE = "SUCCESS";

    public static Result success() {
        return new Result().setCode(ResultCode.SUCCESS)
                .setSuccess(true)
                .setMessage(DEFAULT_SUCCESS_MESSAGE);
    }

    public static Result success(String msg) {
        return new Result().setCode(ResultCode.SUCCESS)
                .setSuccess(true)
                .setMessage(msg);
    }

    public static Result success(String msg, Object data, long totalCount) {
        return new Result().setCode(ResultCode.SUCCESS)
                .setMessage(msg)
                .setData(data)
                .setSuccess(true)
                .setTotalCount(totalCount);
    }

    public static Result fail(String msg) {
        log.error(msg);
        return new Result().setCode(ResultCode.FAIL)
                .setSuccess(false)
                .setMessage(msg);
    }

    public static Result fail(ResultCode code, String msg) {
        log.error(msg);
        return new Result().setCode(code)
                .setSuccess(false)
                .setMessage(msg);
    }

}

定義全局異常處理類

@Slf4j
@RestControllerAdvice
public class ExceptionAdvice {
    @ExceptionHandler(Exception.class)
    public Result exceptionHandler(HttpServletResponse resp, Exception e) {
        log.error(e.getMessage());
        return ReturnUtils.fail(ResultCode.INTERNAL_SERVER_ERROR, e.getMessage());
    }
}

測(cè)試

@RequestMapping("test-exception")
    public void testException() {
        try {
            int i = 1 / 0;
        } catch (Exception e) {
            throw new RuntimeException("服務(wù)器發(fā)生錯(cuò)誤,請(qǐng)聯(lián)系管理員");
        }
    }

結(jié)果

{
    "code":500,
    "success":false,
    "message":"服務(wù)器發(fā)生錯(cuò)誤,請(qǐng)聯(lián)系管理員"
}

代碼

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/74760.html

相關(guān)文章

  • SpringBoot:如何優(yōu)雅地處理全局異常?

    摘要:為了貼合主題,本次主要針對(duì)全局異常處理進(jìn)行舉例說(shuō)明。自定義異常處理自定義一個(gè)異常自定義異常程序員小明錯(cuò)誤碼錯(cuò)誤信息顯而易見(jiàn),這個(gè)異常繼承了,屬于運(yùn)行時(shí)異常。包括處理其他異常,都是這種方式。 之前用springboot的時(shí)候,只知道捕獲異常使用try{}catch,一個(gè)接口一個(gè)try{}catch,這也是大多數(shù)開(kāi)發(fā)人員異常處理的常用方式,雖然屢試不爽,但會(huì)造成一個(gè)問(wèn)題,就是一個(gè)Contr...

    李昌杰 評(píng)論0 收藏0
  • springboot結(jié)合全局異常處理之登錄注冊(cè)驗(yàn)證

    摘要:在學(xué)校做一個(gè)校企合作項(xiàng)目,注冊(cè)登錄這一塊需要對(duì)注冊(cè)登錄進(jìn)行輸入合法的服務(wù)器端驗(yàn)證,因?yàn)槭乔昂蠖朔蛛x開(kāi)發(fā),所以要求返回?cái)?shù)據(jù)。 在學(xué)校做一個(gè)校企合作項(xiàng)目,注冊(cè)登錄這一塊需要對(duì)注冊(cè)登錄進(jìn)行輸入合法的服務(wù)器端驗(yàn)證,因?yàn)槭乔昂蠖朔蛛x開(kāi)發(fā),所以要求返回JSON數(shù)據(jù)。方法有很多,這覺(jué)得用全局異常處理比較容易上手 全局異常處理 首先來(lái)創(chuàng)建一個(gè)sprIngboot的web項(xiàng)目或模塊,目錄結(jié)構(gòu)如下 sho...

    leone 評(píng)論0 收藏0
  • springboot 全局異常處理配置

    摘要:一使用實(shí)現(xiàn)全局異常處理注解定義全局異常處理類指定自定義錯(cuò)誤處理方法攔截的異常類型同一個(gè)異常被小范圍的異常類和大范圍的異常處理器同時(shí)覆蓋,會(huì)選擇小范圍的異常處理器定義異常業(yè)務(wù)類異常年月日定義自定義異常無(wú)數(shù)據(jù)系統(tǒng)異常年月日定義全局異常處理類異常 一、springboot Restful使用@ControllerAdvice、@ExceptionHandler、@ResponseBody實(shí)現(xiàn)...

    劉福 評(píng)論0 收藏0
  • Spring Boot 2.x 系列教程:WebFlux REST API 全局異常處理 Error

    摘要:挺多人咨詢的,異常處理用切面注解去實(shí)現(xiàn)去全局異常處理。全局異常處理類,代碼如下代碼解析如下抽象類是用來(lái)處理全局錯(cuò)誤時(shí)進(jìn)行擴(kuò)展和實(shí)現(xiàn)注解標(biāo)記的切面排序,值越小擁有越高的優(yōu)先級(jí),這里設(shè)置優(yōu)先級(jí)偏高。 本文內(nèi)容 為什么要全局異常處理? WebFlux REST 全局異常處理實(shí)戰(zhàn) 小結(jié) 摘錄:只有不斷培養(yǎng)好習(xí)慣,同時(shí)不斷打破壞習(xí)慣,我們的行為舉止才能夠自始至終都是正確的。 一、為什么要全局...

    BicycleWarrior 評(píng)論0 收藏0
  • SpringBoot 實(shí)戰(zhàn) (十四) | 統(tǒng)一處理異常

    摘要:前言如題,今天介紹是如何統(tǒng)一處理全局異常的。主要是用于異常攔截出獲取并將設(shè)置到消息類中返回。狀態(tài)碼異常攔截類通過(guò)加入來(lái)聲明該類可攔截請(qǐng)求,同時(shí)在方法加入并在該注解中指定要攔截的異常類。測(cè)試訪問(wèn)測(cè)試正常返回?cái)?shù)據(jù)結(jié)果。 微信公眾號(hào):一個(gè)優(yōu)秀的廢人如有問(wèn)題或建議,請(qǐng)后臺(tái)留言,我會(huì)盡力解決你的問(wèn)題。 前言 如題,今天介紹 SpringBoot 是如何統(tǒng)一處理全局異常的。SpringBoot 中...

    arashicage 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<