SpringMVC異常處理知識點(diǎn)總結(jié)
- ResultCode
- CommonCode
- UserCode
- CustomException
- ExceptionCatch
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.9.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies>
統(tǒng)一異常處理
@ControllerAdvice
@ExceptionHandler
@ResponseBody
package com.mozq.mybatisplus.mybatisplus01.exception; import com.mozq.mybatisplus.mybatisplus01.model.CommonCode; import com.mozq.mybatisplus.mybatisplus01.model.Result; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ResponseBody; @ControllerAdvice public class ExceptionCatch { @ExceptionHandler(Exception.class) @ResponseBody public Result handleException(Exception e){ return Result.of(CommonCode.SERVER_ERROR); } @ExceptionHandler(CustomException.class) @ResponseBody public Result handleException(CustomException e){ return Result.of(e.getResultCode()); } }
package com.mozq.mybatisplus.mybatisplus01.exception; import com.mozq.mybatisplus.mybatisplus01.model.ResultCode; public class CustomException extends RuntimeException { private ResultCode resultCode; public CustomException(ResultCode resultCode){ super("錯誤碼:" + resultCode.code() + "錯誤消息:" + resultCode.message()); this.resultCode = resultCode; } public ResultCode getResultCode(){ return resultCode; } }
異常處理測試
@RestController @RequestMapping("/demo") public class DemoController { //單個參數(shù)非空校驗(yàn),使用@RequestParam @RequestMapping("/get") public String getName(@RequestParam String name){ return name; } /* public Result myCustomException(boolean flag) 不傳參數(shù)默認(rèn)false 0-false 1-true 其他數(shù)字拋異常 MethodArgumentTypeMismatchException 正確方式: localhost:8080/demo/myCustomException?flag=1 localhost:8080/demo/myCustomException?flag=true */ @RequestMapping("/myCustomException") public Result myCustomException(boolean flag){ if(flag){ throw new CustomException(UserCode.USER_NOT_EXIST); } return Result.ok(); } }
統(tǒng)一響應(yīng)結(jié)果
package com.mozq.mybatisplus.mybatisplus01.model; import lombok.Data; import java.util.LinkedHashMap; @Data public class Result extends LinkedHashMap { private static final String SUCCESS = "success"; private static final String CODE = "code"; private static final String MESSAGE = "message"; private static final String RESULT = "result"; public static Result of(ResultCode resultCode){ Result R = new Result(); R.put(SUCCESS, resultCode.success()); R.put(CODE, resultCode.code()); R.put(MESSAGE, resultCode.message()); return R; } public static Result ok(){ return Result.of(CommonCode.SUCCESS); } public static Result okWithResult(Object data){ Result R = Result.of(CommonCode.SUCCESS); R.put(RESULT, data); return R; } public static Result fail(){ return Result.of(CommonCode.FAIL); } }
響應(yīng)狀態(tài)碼
package com.mozq.mybatisplus.mybatisplus01.model; public interface ResultCode { boolean success(); String code(); String message(); }
package com.mozq.mybatisplus.mybatisplus01.model; public enum CommonCode implements ResultCode { SUCCESS(true, "000000", "處理成功"), FAIL(true, "000001", "處理失敗"), INVALID_PARAM(false, "100000", "無效的參數(shù)"), SERVER_ERROR(false, "999999", "系統(tǒng)忙,請稍后重試"); private boolean success; private String code; private String message; CommonCode(boolean success, String code, String message){ this.success = success; this.code = code; this.message = message; } @Override public boolean success() { return success; } @Override public String code() { return code; } @Override public String message() { return message; } }
package com.mozq.mybatisplus.mybatisplus01.model; public enum UserCode implements ResultCode { USER_USERNAME_ALREADY_EXIST(false, "200000", "用戶名已經(jīng)存在"), USER_TELEPHONE_ALREADY_USED(false, "200001", "電話號碼已經(jīng)存在"), USER_NOT_EXIST(false, "200002", "用戶不存在"); private boolean success; private String code; private String message; UserCode(boolean success, String code, String message){ this.success = success; this.code = code; this.message = message; } @Override public boolean success() { return success; } @Override public String code() { return code; } @Override public String message() { return message; } }
以上就是本次介紹的關(guān)于SpringMVC異常處理的相關(guān)知識點(diǎn),感謝大家的學(xué)習(xí)和對腳本之家的支持。
相關(guān)文章
Spring利用@Validated注解實(shí)現(xiàn)參數(shù)校驗(yàn)詳解
這篇文章主要為大家詳細(xì)介紹了在?Spring?項(xiàng)目中使用?@Validated?進(jìn)行參數(shù)校驗(yàn)的方法和常見應(yīng)用場景,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-05-05Mybatis注解方式完成輸入?yún)?shù)為list的SQL語句拼接方式
這篇文章主要介紹了Mybatis注解方式完成輸入?yún)?shù)為list的SQL語句拼接方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-11-11關(guān)于Idea使用git時commit特別慢的問題及解決方法
這篇文章主要介紹了關(guān)于Idea使用git時commit特別慢的問題及解決方法,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-10-10詳解JAVA高質(zhì)量代碼之?dāng)?shù)組與集合
在學(xué)習(xí)編程的過程中,我覺得不止要獲得課本的知識,更多的是通過學(xué)習(xí)技術(shù)知識提高解決問題的能力,這樣我們才能走在最前方,本文主要講述Java高質(zhì)量代碼之?dāng)?shù)組與集合2013-08-08springboot項(xiàng)目中引入本地依賴jar包并打包到lib文件夾中
這篇文章主要介紹了springboot項(xiàng)目中引入本地依賴jar包,如何打包到lib文件夾中,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-04-04java實(shí)現(xiàn)通訊錄管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)通訊錄管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-07-07