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

统一异常处理

一、类型一

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; } }

持续更新……

http://www.cnnetsun.cn/news/21181.html

相关文章:

  • 审计场景中录音转文字工具的技术实现与选型指南
  • Livewire完整入门指南:5分钟掌握Laravel动态界面开发
  • Origami Simulator实战指南:从零开始掌握数字折纸艺术
  • 波浪带鱼理论:过滤无效信号,提升投资收益的法宝
  • Step1X-Edit v1.2发布:推理编辑能力跃升,重新定义AI图像创作标准
  • BlenderMCP像素艺术转换终极指南:从3D模型到复古游戏资产的快速上手
  • OpenMower机器人割草机固件测试实战指南
  • 23、深入解析Kubernetes集群扩展与高级网络
  • Many Notes:打造高效云端笔记的终极解决方案
  • 【网络安全】渗透测试零基础入门之什么是文件包含漏洞?一文带你讲清其中的原理!
  • TypeScript:现代前端开发的类型约束者
  • 专业字体文件转换完全指南:ttctools使用详解
  • Descript Audio Codec:终极音频压缩解决方案,90倍压缩率重塑音质体验
  • 利用 DeepSeek 提升工作效率
  • Webhook.site终极选择指南:自部署与云端方案深度解析
  • PHPBrew自定义任务终极指南:扩展开发与实战技巧
  • 如何优雅重构HP-Socket应用:Deno 2.0兼容性深度解析与迁移策略
  • 老旧Mac升级终极指南:完整教程解锁macOS兼容新世界
  • 联想显卡散热风扇更换教程查找全攻略:从官方指引到社区经验
  • springboot基于vue的管网隐患安全巡检系统_i2g600ga
  • next-scene LoRA实战指南:3步实现电影级分镜AI生成
  • 传统算法之Canny亚像素边缘检测及将离散边缘点链接成线条的优化和探讨。
  • Autoware卡尔曼滤波技术:让自动驾驶感知系统更精准可靠
  • 优化算法matlab实现(一)相关matlab基础
  • 降本增效利器!腾讯云云服务器成本优势全解析
  • 如何5分钟搭建跨平台窗口监控系统:终极工具完全指南
  • NotchDrop:让MacBook刘海变身智能文件中转站
  • 5亿参数改写边缘智能规则:腾讯Hunyuan-0.5B-Instruct轻量化模型深度解析
  • 如何快速解决Nacos数据库升级冲突:5个实用技巧
  • 高密度互连板层压创新:从任意层互连到微孔填充技术