高效开发之:封装抛异常工具类

编程入门 行业动态 更新时间:2024-10-25 04:18:37

<a href=https://www.elefans.com/category/jswz/34/1769624.html style=高效开发之:封装抛异常工具类"/>

高效开发之:封装抛异常工具类

一、首先自定义个错误码枚举类

public enum ErrorCode {SUCCESS(0, "ok"),PARAMS_ERROR(40000, "请求参数错误"),NOT_LOGIN_ERROR(40100, "未登录"),NO_AUTH_ERROR(40101, "无权限"),NOT_FOUND_ERROR(40400, "请求数据不存在"),FORBIDDEN_ERROR(40300, "禁止访问"),SYSTEM_ERROR(50000, "系统内部异常"),OPERATION_ERROR(50001, "操作失败");/*** 状态码*/private final int code;/*** 信息*/private final String message;ErrorCode(int code, String message) {this.code = code;this.message = message;}public int getCode() {return code;}public String getMessage() {return message;}}

二、自定义异常类

实现不用传错误信息,只需要传错误码即可自动匹配到错误信息。

public class BusinessException extends RuntimeException {/*** 错误码*/private final int code;public BusinessException(int code, String message) {super(message);this.code = code;}public BusinessException(ErrorCode errorCode) {super(errorCode.getMessage());this.code = errorCode.getCode();}public BusinessException(ErrorCode errorCode, String message) {super(message);this.code = errorCode.getCode();}public int getCode() {return code;}
}

三、自定义抛异常工具类

public class ThrowUtils {/*** 条件成立则抛异常** @param condition* @param runtimeException*/public static void throwIf(boolean condition, RuntimeException runtimeException) {if (condition) {throw runtimeException;}}/*** 条件成立则抛异常** @param condition* @param errorCode*/public static void throwIf(boolean condition, ErrorCode errorCode) {throwIf(condition, new BusinessException(errorCode));}/*** 条件成立则抛异常** @param condition* @param errorCode* @param message*/public static void throwIf(boolean condition, ErrorCode errorCode, String message) {throwIf(condition, new BusinessException(errorCode, message));}
}

四、应用例子

		// 保存boolean result = apiInfoService.save(apiInfo);ThrowUtils.throwIf(!result, ErrorCode.OPERATION_ERROR);
		// 判断是否存在ApiInfo oldApiInfo = apiInfoService.getById(id);ThrowUtils.throwIf(oldApiInfo == null, ErrorCode.NOT_FOUND_ERROR);
		// 限制爬虫ThrowUtils.throwIf(size > 20, ErrorCode.PARAMS_ERROR);

五、配合全局异常处理器

@RestControllerAdvice
@Slf4j
public class GlobalExceptionHandler {@ExceptionHandler(BusinessException.class)public BaseResponse<?> businessExceptionHandler(BusinessException e) {log.error("BusinessException", e);return ResultUtils.error(e.getCode(), e.getMessage());}@ExceptionHandler(RuntimeException.class)public BaseResponse<?> runtimeExceptionHandler(RuntimeException e) {log.error("RuntimeException", e);return ResultUtils.error(ErrorCode.SYSTEM_ERROR, "系统错误");}
}

更多推荐

高效开发之:封装抛异常工具类

本文发布于:2023-11-16 07:26:27,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1614693.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:高效   异常   工具

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!