从头搭建一个SpringBoot项目,至少应该引入哪些配置?( 四 )

  • 手动抛出CustomException并传入ReulstEnum ——> 进行捕获错误信息输出错误信息 。
  • @Data @EqualsAndHashCode(callSuper = false) public class CustomException extends RuntimeException { /** * 状态码 */ private final Integer code; /** * 方法名称 */ private final String method; /** * 自定义异常 * * @param resultEnum 返回枚举对象 * @param method 方法 */ public CustomException(ResultEnum resultEnum, String method) { super(resultEnum.getmsg); this.code = resultEnum.getCode; this.method = method; } /** * @param code 状态码 * @param message 错误信息 * @param method 方法 */ public CustomException(Integer code, String message, String method) { super(message); this.code = code; this.method = method; } } 错误信息枚举根据业务进行添加 。
    @Getter public enum ResultEnum { /** * 未知异常 */ UNKNOWN_EXCEPTION(100, "未知异常"), /** * 添加失败 */ ADD_ERROR(103, "添加失败"), /** * 更新失败 */ UPDATE_ERROR(104, "更新失败"), /** * 删除失败 */ DELETE_ERROR(105, "删除失败"), /** * 查找失败 */ GET_ERROR(106, "查找失败"), ; private Integer code; private String msg; ResultEnum(Integer code, String msg) { this.code = code; this.msg = msg; } /** * 通过状态码获取枚举对象 * @param code 状态码 * @return 枚举对象 */ public static ResultEnum getByCode(int code){ for (ResultEnum resultEnum : ResultEnum.values) { if(code == resultEnum.getCode){ return resultEnum; } } return null; } } 全局异常拦截全局异常拦截是使用@ControllerAdvice进行实现 , 常用的异常拦截配置可以查看 GlobalExceptionHandling
    @Slf4j @RestControllerAdvice public class GlobalExceptionHandling { /** * 自定义异常 */ @ExceptionHandler(value = http://news.hoteastday.com/a/CustomException.class) public ResultVo processException(CustomException e) { log.error("位置:{} -> 错误信息:{}", e.getMethod ,e.getLocalizedMessage); return ResultVoUtil.error(Objects.requireNonNull(ResultEnum.getByCode(e.getCode))); } /** * 通用异常 */ @ResponseStatus(HttpStatus.OK) @ExceptionHandler(Exception.class) public ResultVo exception(Exception e) { e.printStackTrace; return ResultVoUtil.error(ResultEnum.UNKNOWN_EXCEPTION); } } /** * 删除用户 * @param id 用户编号 * @return 成功或者失败 */ @ApiOperation("删除用户") @DeleteMapping("/deleteUser/{id}") public ResultVo deleteUser(@PathVariable("id") String id){ userService.deleteUser(id); return ResultVoUtil.success; } Service/** * 删除用户 * @param id id */ @Override public void deleteUser(String id) { // 如果删除失败抛出异常 。-- 演示而已不推荐这样干 if(!removeById(id)){ throw new CustomException(ResultEnum.DELETE_ERROR, MethodUtil.getLineInfo); } } 结果
    从头搭建一个SpringBoot项目,至少应该引入哪些配置?
    本文插图
    将报错代码所在的文件第多少行都打印出来 。 方便排查 。
    注意的点所有手动抛出的错误信息 , 都应在错误信息枚举ResultEnum进行统一维护 。 不同的业务使用不同的错误码 。 方便在报错时进行分辨 。 快速定位问题 。