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