当前位置: 首页 > 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.xdnf.cn/news/1240759.html

相关文章:

  • Android UI 组件系列(九):ListView 性能优化与 ViewHolder 模式实战
  • 复现论文《A Fiber Bragg Grating Sensor System for Train Axle Counting》
  • 多级表头的导出
  • 如何使用EF框架操作Sqlite
  • 多租户字典管理系统完整设计
  • TCP 协议的“无消息边界”(No Message Boundaries)特性
  • shell脚本tcpdump抓取数据解析执行关机指令
  • PyCharm代码规范与代码格式化插件安装与使用:pylint和autopep8
  • 质押和抵押有什么区别
  • 【Java】一篇详解HashMap的扩容机制!!
  • 2025年8月4日私鱼创作平台v1.0.4公测版更新发布-完成大部分功能包含关注创作者以及发布作品及合集功能优雅草科技
  • 音视频学习笔记
  • 深入解析 Apache Tomcat 配置文件
  • Planner 5D v2.29.0 安卓高级解锁版,手机3D家装,全套家具免费
  • 鸿蒙开发-端云一体化--云数据库
  • [spring-cloud: 负载均衡]-源码分析
  • Nginx服务做负载均衡网关
  • 【项目实践】在系统接入天气api,根据当前天气提醒,做好plan
  • 基于Java的AI工具和框架
  • 【异常案例分析】使用空指针调用函数(非虚函数)时,没有崩溃在函数调用处,而是崩在被调用函数内部
  • Android Telephony 框架与横向支撑层
  • Android JUnit 测试框架详解:从基础到高级实践
  • Flask + HTML 项目开发思路
  • 开源的现代数据探索和可视化平台:Apache Superset 快速指南 Quickstart
  • Android的UI View是如何最终绘制成一帧显示在手机屏幕上?
  • 阿里云-通义灵码:解锁云原生智能开发新能力,让云开发更“灵”~
  • 福彩双色球第2025089期篮球号码分析
  • 理解 JavaScript 中的“ / ”:路径、资源与目录、nginx配置、请求、转义的那些事
  • 超急评估:用提前计算分摊性能成本
  • go学习笔记:panic是什么含义