news 2026/1/2 13:47:00

统一异常处理

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
统一异常处理

一、类型一

1、自定义异常

@Data public class LeaseException extends RuntimeException { private Integer code; public LeaseException(Integer code, String message) { super(message); this.code = code; } public LeaseException(ResultCodeEnum resultCodeEnum) { super(resultCodeEnum.getMessage()); this.code = resultCodeEnum.getCode(); } }

2、统一返回结果状态信息类

import lombok.Getter; /** * 统一返回结果状态信息类 */ @Getter public enum ResultCodeEnum { SUCCESS(200, "成功"), FAIL(201, "失败"), PARAM_ERROR(202, "参数不正确"), SERVICE_ERROR(203, "服务异常"), DATA_ERROR(204, "数据异常"), ILLEGAL_REQUEST(205, "非法请求"), REPEAT_SUBMIT(206, "重复提交"), DELETE_ERROR(207, "请先删除子集"), ADMIN_ACCOUNT_EXIST_ERROR(301, "账号已存在"), ADMIN_CAPTCHA_CODE_ERROR(302, "验证码错误"), ADMIN_CAPTCHA_CODE_EXPIRED(303, "验证码已过期"), ADMIN_CAPTCHA_CODE_NOT_FOUND(304, "未输入验证码"), ADMIN_LOGIN_AUTH(305, "未登陆"), ADMIN_ACCOUNT_NOT_EXIST_ERROR(306, "账号不存在"), ADMIN_ACCOUNT_ERROR(307, "用户名或密码错误"), ADMIN_ACCOUNT_DISABLED_ERROR(308, "该用户已被禁用"), ADMIN_ACCESS_FORBIDDEN(309, "无访问权限"), APP_LOGIN_AUTH(501, "未登陆"), APP_LOGIN_PHONE_EMPTY(502, "手机号码为空"), APP_LOGIN_CODE_EMPTY(503, "验证码为空"), APP_SEND_SMS_TOO_OFTEN(504, "验证法发送过于频繁"), APP_LOGIN_CODE_EXPIRED(505, "验证码已过期"), APP_LOGIN_CODE_ERROR(506, "验证码错误"), APP_ACCOUNT_DISABLED_ERROR(507, "该用户已被禁用"), TOKEN_EXPIRED(601, "token过期"), TOKEN_INVALID(602, "token非法"); private final Integer code; private final String message; ResultCodeEnum(Integer code, String message) { this.code = code; this.message = message; } }

3、全局异常处理

@RestControllerAdvice public class GlobalExceptionHandler { @ExceptionHandler(Exception.class) public Result handle(Exception e) { e.printStackTrace(); return Result.fail(); } @ExceptionHandler(LeaseException.class) public Result handle(LeaseException e) { String message = e.getMessage(); Integer code = e.getCode(); e.printStackTrace(); return Result.fail(code, message); } }

4、统一返回结构

import lombok.Data; /** * 全局统一返回结果类 */ @Data public class Result<T> { //返回码 private Integer code; //返回消息 private String message; //返回数据 private T data; public Result() { } private static <T> Result<T> build(T data) { Result<T> result = new Result<>(); if (data != null) result.setData(data); return result; } public static <T> Result<T> build(T body, ResultCodeEnum resultCodeEnum) { Result<T> result = build(body); result.setCode(resultCodeEnum.getCode()); result.setMessage(resultCodeEnum.getMessage()); return result; } public static <T> Result<T> ok(T data) { return build(data, ResultCodeEnum.SUCCESS); } public static <T> Result<T> ok() { return Result.ok(null); } public static <T> Result<T> fail() { return build(null, ResultCodeEnum.FAIL); } public static <T> Result<T> fail(Integer code, String message) { Result<T> result = build(null); result.setCode(code); result.setMessage(message); return result; } }

持续更新……

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2025/12/12 17:10:57

网络编程代码解析

C 网络编程代码解析&#xff08;更新了poll和epoll多路复用&#xff09; 客户端代码&#xff08;client.cpp&#xff09; #include "../myhead.h" #define SER_IP "xxx" // 服务器IP地址 #define SER_PORT 8888 // 服务器端口号 …

作者头像 李华
网站建设 2025/12/12 17:10:26

告别模组安装噩梦:Wabbajack如何用自动化技术拯救游戏玩家

告别模组安装噩梦&#xff1a;Wabbajack如何用自动化技术拯救游戏玩家 【免费下载链接】wabbajack An automated Modlist installer for various games. 项目地址: https://gitcode.com/gh_mirrors/wa/wabbajack 还在为复杂的模组安装步骤头疼吗&#xff1f;每次重装系统…

作者头像 李华
网站建设 2025/12/30 2:47:49

如何快速掌握Intel One Mono字体:开发者的完整配置指南

如何快速掌握Intel One Mono字体&#xff1a;开发者的完整配置指南 【免费下载链接】intel-one-mono Intel One Mono font repository 项目地址: https://gitcode.com/gh_mirrors/in/intel-one-mono 在现代软件开发中&#xff0c;选择合适的编程字体对提升编码效率和减少…

作者头像 李华
网站建设 2025/12/12 17:09:07

基于Springboot酒店管理系统的设计与实现c12044zy(程序、源码、数据库、调试部署方案及开发环境)系统界面展示及获取方式置于文档末尾,可供参考。

一、系统程序文件列表 二、开题报告内容 基于Spring Boot的酒店管理系统的设计与实现 开题报告 一、选题背景与意义 1.1 选题背景 随着旅游业的快速发展和互联网技术的普及&#xff0c;酒店行业对信息化管理的需求日益迫切。传统酒店管理方式&#xff08;如手工记录、单机…

作者头像 李华
网站建设 2025/12/12 17:09:06

[天机学堂]-04我的课表2

开发接口 添加课程到课表 需求分析: 用户购买课程后&#xff0c;交易服务会通过MQ通知学习服务&#xff0c;学习服务将课程加入用户课表中 接下来&#xff0c;我们来分析一下添加课表逻辑的业务流程。首先来对比一下请求参数和数据库字段&#xff1a; 一个userId和一个cours…

作者头像 李华
网站建设 2025/12/12 17:08:45

WatchAlert 轻量级AI日志告警 - Docker安装部署

全面兼容主流可观测技术栈监控类型 支持的数据源Metrics Prometheus、VictoriaMetricsLogs Loki、ElasticSearch、VictoriaLogs、ClickHouse、SLS&#xff08;阿里云日志服务&#xff09;、TLS&#xff08;火山云日志服务&#xff0c;开发中&#xff09;、CLS&#xff08;腾讯云…

作者头像 李华