天天看點

PHP短視訊源碼,全局異常處理

PHP短視訊源碼,全局異常處理相關的代碼

package com.chashiyu.configuration;

import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestControllerAdvice;

/**
 * @author shiyu.zha on 2019-09-29.
 * @see ModelAttribute 把值綁定到Model中,使全局@RequestMapping可以擷取到該值
 * @see ExceptionHandler 指定攔截異常的類型
 * @see ResponseStatus 自定義浏覽器傳回狀态碼
 */
@Slf4j
@RestControllerAdvice
public class MyExceptionHandler {
    @Data
    public class ResultData {
        private int code;
        private String message;
        private Object data;

        public ResultData(Object data) {
            this.code = RespCode.SUCCESS.getCode();
            this.message = RespCode.SUCCESS.getMessage();
            this.data = data;
        }
    }
     //    @ModelAttribute
//    public void addAttribute(Model model) {//        model.addAttribute("attribute", "The Attribute");//    }    
@ExceptionHandler({CustomException.class})    public ResultData custom(CustomException e) {        log.error("自定義異常-->{}: {}", e.getRespCode().getCode(), e.getRespCode().getMessage());        return new ResultData(e.getRespCode());    }    @ExceptionHandler({Exception.class})    public ResultData global(Exception e) {        log.error("全局異常-->{}: {}", RespCode.SERVER_ERROR.getCode(), RespCode.SERVER_ERROR.getMessage(), e);        return new ResultData(RespCode.SERVER_ERROR);    }    public class CustomException extends RuntimeException {        private static final long serialVersionUID = 1L;        private RespCode respCode;        public CustomException(RespCode respCode) {            super(respCode.getMessage());            this.respCode = respCode;        }        public CustomException(RespCode respCode, String message) {            super(message);            this.respCode = respCode;        }        public CustomException(RespCode respCode, Throwable t) {            super(respCode.getMessage(), t);            this.respCode = respCode;        }        public CustomException(RespCode respCode, String message, Throwable t) {            super(message, t);            this.respCode = respCode;        }        public RespCode getRespCode() {            return respCode;        }    }
public enum RespCode {
        SUCCESS(200, "success"),
        SERVER_ERROR(1000, "服務異常"),         //代碼未捕獲、或不能捕獲
        PARAM_ERROR(1001, "參數錯誤"),          //代碼中已捕獲
        SYSTEM_ERROR(1002, "系統錯誤"),         //代碼中已捕獲
        AUTH_FAILED(1003, "驗權失敗");          //代碼中已捕獲

        private int code;
        private String message;

        RespCode(int code, String message) {
            this.code = code;
            this.message = message;
        }

        public static String getByCode(Integer code) {
            RespCode[] values = RespCode.values();
            for (RespCode value : values) {
                if (code.equals(value.code))
                    return value.message;
            }
            return null;
        }

        public static String getMessage(RespCode resultCode) {
            RespCode[] values = RespCode.values();
            for (RespCode value : values) {
                if (resultCode.equals(value))
                    return resultCode.message;
            }
            return null;
        }

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

以上就是PHP短視訊源碼,全局異常處理相關的代碼, 更多内容歡迎關注之後的文章