摘要:定義全局返回狀態(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
摘要:為了貼合主題,本次主要針對(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...
摘要:在學(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...
摘要:一使用實(shí)現(xiàn)全局異常處理注解定義全局異常處理類指定自定義錯(cuò)誤處理方法攔截的異常類型同一個(gè)異常被小范圍的異常類和大范圍的異常處理器同時(shí)覆蓋,會(huì)選擇小范圍的異常處理器定義異常業(yè)務(wù)類異常年月日定義自定義異常無(wú)數(shù)據(jù)系統(tǒng)異常年月日定義全局異常處理類異常 一、springboot Restful使用@ControllerAdvice、@ExceptionHandler、@ResponseBody實(shí)現(xiàn)...
摘要:挺多人咨詢的,異常處理用切面注解去實(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í)慣,我們的行為舉止才能夠自始至終都是正確的。 一、為什么要全局...
摘要:前言如題,今天介紹是如何統(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 中...
閱讀 3727·2021-10-11 10:59
閱讀 1317·2019-08-30 15:44
閱讀 3489·2019-08-29 16:39
閱讀 2896·2019-08-29 16:29
閱讀 1812·2019-08-29 15:24
閱讀 817·2019-08-29 15:05
閱讀 1271·2019-08-29 12:34
閱讀 2350·2019-08-29 12:19