自定义异常和统一校验参数
自定义异常
@Getter public class BusinessException extends RuntimeException { /** * http状态码 */ private int code; private Object object; public BusinessException(String message, int code, Object object) { super(message); this.code = code; this.object = object; } public BusinessException(ResultCode resultCode) { this.code = resultCode.getCode(); this.object = resultCode.getMessage(); } public BusinessException(ResultCode resultCode, String message) { this.code = resultCode.getCode(); this.object = message; } public BusinessException(String message) { super(message); } }
一些常见需要对参数进校验,项目中自定义了一个校验工具类ParamValidate
public class ParamValidate { public static void isNull(Object object, String message) { if (object == null) { throw new BusinessException(ResultCode.PARAMETER_EMPTY, message); } } public static void isTrue(boolean expression, String message) { if (!expression) { throw new BusinessException(ResultCode.PARAMETER_ERROR, message); } } public static void notEmpty(Collection collection, String message) { isNull(collection, message); if (collection.size() == 0) { throw new BusinessException(ResultCode.PARAMETER_ERROR, message); } } }
工具使用:
@RestController @RequestMapping("/test") public class TestController { @Resource private MessageTemplateSingleton messageTemplateSingleton; @GetMapping("/index1") public CommonResult<MessageTemplateSingleton.Template> index() { ParamValidate.isNull(null, "参数为空"); MessageTemplateSingleton.Template template = messageTemplateSingleton.getTemplate(1); return CommonResult.success(template); } }
自定义异常统一处理:
@RestControllerAdvice @Slf4j public class ChargeStationAdvice { @ExceptionHandler(Exception.class) public CommonResult<String> doException(Exception e) { log.error("统一处理自定义异常机制,触发异常 msg ", e); String message = null; int errorCode = ResultCode.FAILED.getCode(); //自定义异常 if (e instanceof BusinessException) { BusinessException exception = (BusinessException) e; message = exception.getMessage(); errorCode = exception.getCode(); } else if (e instanceof HttpRequestMethodNotSupportedException) { message = "不支持GET/POST方法"; } else if (e instanceof NoHandlerFoundException) { message = "请求接口不存在"; } else{ message = "系统异常"; } return CommonResult.failed(errorCode, message); } }
吾乃代码搬运工,侵联删