当前位置: 首页 > news >正文

抛出自定义异常

1.自定义异常

@Getter
public class ServiceImplException extends RuntimeException {private ResultCode resultCode;public ServiceImplException(ResultCode resultCode) {this.resultCode = resultCode;}
}

 ResultCode是一个枚举类,用来枚举出现的状态码和异常信息。

@AllArgsConstructor
@Getter
public enum ResultCode {/** 定义状态码 *///操作成功SUCCESS                     (1000, "操作成功"),//服务器内部错误,友好提示ERROR                       (2000, "服务繁忙请稍后重试")
}

2.定义全局异常处理

实现代码:

@Slf4j
@RestControllerAdvice
public class GlobalExceptionHandler<T> {@ExceptionHandler(HttpRequestMethodNotSupportedException.class)public Result<?>handleHttpRequestMethodNotSupported(HttpRequestMethodNotSupportedException e,HttpServletRequest request){String requestURI = request.getRequestURI();log.error("请求地址'{}',不⽀持'{}'请求", requestURI, e.getMethod());return Result.failed(ResultCode.FAILED_USER_NOT_EXISTS);}/*** 拦截运⾏时异常*/@ExceptionHandler(RuntimeException.class)public Result<?> handleRuntimeException(RuntimeException e, HttpServletRequestrequest) {String requestURI = request.getRequestURI();log.error("请求地址'{}',发⽣异常.", requestURI, e);return Result.failed(ResultCode.ERROR);}/*** 捕获service层的异常* @param e* @param request* @return*/@ExceptionHandler(ServiceImplException.class)public Result<?> ServiceImplException(ServiceImplException e, HttpServletRequest request) {String requestURI = request.getRequestURI();ResultCode resultCode = e.getResultCode();log.error("请求地址'{}',发生业务异常.", requestURI, resultCode.getMsg(),e);return Result.failed(resultCode);}/*** 系统异常*/@ExceptionHandler(Exception.class)public Result<?> handleException(Exception e, HttpServletRequest request) {String requestURI = request.getRequestURI();log.error("请求地址'{}',发⽣异常.", requestURI, e);return Result.failed (ResultCode. ERROR );}@ExceptionHandler(MethodArgumentNotValidException.class)public Result<?> handleBindException(Exception e, HttpServletRequest request) {String requestURI = request.getRequestURI();log.error("请求地址'{}',发⽣异常.", requestURI, e);return Result.failed (ResultCode.ERROR_FORMAT );}
}

注意两点:

一是需要在类上@RestControllerAdvice加上注解。

二是需要在相应的方法上加上@ExceptionHandler注解,后面跟上处理相应的异常。

最终达到的效果就是我们在服务层抛出相应的异常之后,这里会自动捕捉抛出的异常,但是抛出的异常必须是这里实现相应的逻辑的异常。

http://www.dtcms.com/a/315230.html

相关文章:

  • 普及冲奖——贪心补题报告
  • MySQL详解
  • Docker 和Docker-compose常用命令
  • STM32标准库的工程创建
  • 推荐广告搜索三种业务的区别
  • 非机动车乱停放识别准确率↑37%:陌讯多特征融合算法实战解析
  • 04-Chapter02-Example01
  • 【cooragent多智能体】各个单智能体的输入与输出(实际案例)
  • Jmeter进阶(笔记)
  • 进程间通信:管道与共享内存
  • 亚马逊广告进阶:如何选择提曝光还是控曝光
  • 【C++】石头剪刀布游戏
  • Makefile文件写法模板
  • 刷题记录0804
  • app-1
  • 1行JS实现无限滚动加载(Intersection Observer版)
  • vcpkg在vs/vscode下用法
  • 南水北调中线工程图件 shp数据
  • 飞算 JavaAI 操作全流程体验:一次面向纯 Java 项目的智能提效之旅
  • 【无标题】标准 I/O 中的一些函数,按功能分类说明其用法和特点
  • JavaScript中的作用域、闭包、定时器 由浅入深
  • idea添加gitlab访问令牌
  • 【Canvas与文字】生存与生活
  • 2025年08月04日Github流行趋势
  • 工控领域协议之Modbus
  • prometheus应用CounterGauge
  • prometheus应用demo(一)接口监控
  • 【MySQL04】:基础查询
  • 初识SpringBoot
  • Java计算机网络面试题