摘要:定義全局返回狀態(tài)響應碼響應結果成功失敗響應信息響應數(shù)據(jù)數(shù)據(jù)總數(shù)定義全局成功失敗未認證簽名錯誤未登錄接口不存在服務器內(nèi)部錯誤定義返回工具類定義全局異常處理類測試服務器發(fā)生錯誤,請聯(lián)系管理員結果服務器發(fā)生錯誤,請聯(lián)系管理員代碼
定義全局返回result
public class Result { /** * 狀態(tài)響應碼 */ private int code; /** * 響應結果 成功/失敗 */ private boolean success; /** * 響應信息 */ private String message; /** * 響應數(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),//未認證(簽名錯誤) 未登錄 NOT_FOUND(404),//接口不存在 INTERNAL_SERVER_ERROR(500);//服務器內(nèi)部錯誤 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()); } }
測試
@RequestMapping("test-exception") public void testException() { try { int i = 1 / 0; } catch (Exception e) { throw new RuntimeException("服務器發(fā)生錯誤,請聯(lián)系管理員"); } }
結果
{ "code":500, "success":false, "message":"服務器發(fā)生錯誤,請聯(lián)系管理員" }
代碼
文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://www.ezyhdfw.cn/yun/74760.html
摘要:為了貼合主題,本次主要針對全局異常處理進行舉例說明。自定義異常處理自定義一個異常自定義異常程序員小明錯誤碼錯誤信息顯而易見,這個異常繼承了,屬于運行時異常。包括處理其他異常,都是這種方式。 之前用springboot的時候,只知道捕獲異常使用try{}catch,一個接口一個try{}catch,這也是大多數(shù)開發(fā)人員異常處理的常用方式,雖然屢試不爽,但會造成一個問題,就是一個Contr...
摘要:在學校做一個校企合作項目,注冊登錄這一塊需要對注冊登錄進行輸入合法的服務器端驗證,因為是前后端分離開發(fā),所以要求返回數(shù)據(jù)。 在學校做一個校企合作項目,注冊登錄這一塊需要對注冊登錄進行輸入合法的服務器端驗證,因為是前后端分離開發(fā),所以要求返回JSON數(shù)據(jù)。方法有很多,這覺得用全局異常處理比較容易上手 全局異常處理 首先來創(chuàng)建一個sprIngboot的web項目或模塊,目錄結構如下 sho...
摘要:一使用實現(xiàn)全局異常處理注解定義全局異常處理類指定自定義錯誤處理方法攔截的異常類型同一個異常被小范圍的異常類和大范圍的異常處理器同時覆蓋,會選擇小范圍的異常處理器定義異常業(yè)務類異常年月日定義自定義異常無數(shù)據(jù)系統(tǒng)異常年月日定義全局異常處理類異常 一、springboot Restful使用@ControllerAdvice、@ExceptionHandler、@ResponseBody實現(xiàn)...
摘要:挺多人咨詢的,異常處理用切面注解去實現(xiàn)去全局異常處理。全局異常處理類,代碼如下代碼解析如下抽象類是用來處理全局錯誤時進行擴展和實現(xiàn)注解標記的切面排序,值越小擁有越高的優(yōu)先級,這里設置優(yōu)先級偏高。 本文內(nèi)容 為什么要全局異常處理? WebFlux REST 全局異常處理實戰(zhàn) 小結 摘錄:只有不斷培養(yǎng)好習慣,同時不斷打破壞習慣,我們的行為舉止才能夠自始至終都是正確的。 一、為什么要全局...
摘要:前言如題,今天介紹是如何統(tǒng)一處理全局異常的。主要是用于異常攔截出獲取并將設置到消息類中返回。狀態(tài)碼異常攔截類通過加入來聲明該類可攔截請求,同時在方法加入并在該注解中指定要攔截的異常類。測試訪問測試正常返回數(shù)據(jù)結果。 微信公眾號:一個優(yōu)秀的廢人如有問題或建議,請后臺留言,我會盡力解決你的問題。 前言 如題,今天介紹 SpringBoot 是如何統(tǒng)一處理全局異常的。SpringBoot 中...
閱讀 3774·2021-10-11 10:59
閱讀 1376·2019-08-30 15:44
閱讀 3540·2019-08-29 16:39
閱讀 2959·2019-08-29 16:29
閱讀 1879·2019-08-29 15:24
閱讀 883·2019-08-29 15:05
閱讀 1320·2019-08-29 12:34
閱讀 2470·2019-08-29 12:19