news 2026/6/9 5:34:13

throw new Exception 如何指定返回code

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
throw new Exception 如何指定返回code

解决方案:自定义异常类(推荐)

Java标准库中的ExceptionRuntimeException等基础异常类都没有提供错误码(code)的属性,因此最常用、最灵活的方式是创建自定义异常类,在其中添加code属性并提供对应的构造方法。

根据业务场景,你可以选择继承受检异常Exception)或非受检异常RuntimeException,更推荐用于业务异常,无需强制捕获)。

1. 自定义业务异常类(带错误码)
/** * 自定义业务异常类,支持错误码和错误消息 */publicclassBusinessExceptionextendsRuntimeException{// 错误码privateintcode;// 构造方法1:只传错误消息(默认错误码,比如500)publicBusinessException(Stringmessage){super(message);this.code=500;// 默认系统错误码}// 构造方法2:传错误码和错误消息(核心)publicBusinessException(intcode,Stringmessage){super(message);this.code=code;}// 构造方法3:传错误码、消息和异常原因(用于异常链)publicBusinessException(intcode,Stringmessage,Throwablecause){super(message,cause);this.code=code;}// 获取错误码的getter方法publicintgetCode(){returncode;}}
2. 使用自定义异常(指定code)
// 抛出异常:指定错误码(比如401:未授权)和消息thrownewBusinessException(401,"未携带 Token,请登录");
3. 捕获异常并获取code
try{// 执行可能抛出异常的逻辑thrownewBusinessException(401,"未携带 Token,请登录");}catch(BusinessExceptione){// 获取错误码和消息intcode=e.getCode();Stringmessage=e.getMessage();System.out.println("错误码:"+code+",错误消息:"+message);}

补充:框架自带的异常(适用于特定场景)

如果你使用了Spring、Spring Boot等框架,部分框架提供了支持状态码的异常,但这些主要是HTTP状态码,而非业务错误码:

  • ResponseStatusException(Spring提供):用于指定HTTP状态码和消息,比如new ResponseStatusException(HttpStatus.UNAUTHORIZED, "未携带 Token,请登录")
  • HttpClientErrorException:用于HTTP客户端的异常,携带HTTP状态码。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/9 23:35:50

夸克网盘自动化管理终极指南:从零开始构建智能签到系统

夸克网盘自动化管理终极指南:从零开始构建智能签到系统 【免费下载链接】quark-auto-save 夸克网盘签到、自动转存、命名整理、发推送提醒和刷新媒体库一条龙 项目地址: https://gitcode.com/gh_mirrors/qu/quark-auto-save 想要彻底解放双手,让夸…

作者头像 李华
网站建设 2026/6/9 18:49:25

【终极指南】WVP-GB28181-Pro:3步搞定专业级国标视频平台部署

【终极指南】WVP-GB28181-Pro:3步搞定专业级国标视频平台部署 【免费下载链接】wvp-GB28181-pro 项目地址: https://gitcode.com/GitHub_Trending/wv/wvp-GB28181-pro 还在为复杂的视频监控系统部署而头疼吗?今天您将学会如何用最简单的方式&…

作者头像 李华
网站建设 2026/6/4 6:25:14

26、线程、文件与目录管理技术解析

线程、文件与目录管理技术解析 线程取款函数分析 下面是一个取款函数的代码: int withdraw (struct account *account, int amount) {pthread_mutex_lock (&account->mutex);const int balance = account->balance;if (balance < amount) {pthread_mutex_unl…

作者头像 李华
网站建设 2026/6/9 16:45:04

30、Linux 文件事件监控与内存管理技术解析

Linux 文件事件监控与内存管理技术解析 1. inotify 实例添加新监控 可以向现有的 inotify 实例添加新的监控。示例代码如下: int wd; wd = inotify_add_watch (fd, "/etc", IN_ACCESS | IN_MODIFY); if (wd == -1) {perror ("inotify_add_watch");exi…

作者头像 李华
网站建设 2026/6/8 20:06:37

R语言Copula应用全解析(金融风险建模核心技术大公开)

第一章&#xff1a;金融风险的 R 语言 Copula 参数估计在金融风险管理中&#xff0c;资产收益之间的依赖结构建模至关重要。传统的线性相关系数无法充分捕捉尾部依赖和非对称关系&#xff0c;而 Copula 模型提供了一种灵活的方法&#xff0c;能够分离边缘分布与联合依赖结构&am…

作者头像 李华
网站建设 2026/6/9 2:02:47

如何快速掌握BaiduPCS-Go:命令行网盘管理的终极指南

如何快速掌握BaiduPCS-Go&#xff1a;命令行网盘管理的终极指南 【免费下载链接】BaiduPCS-Go 项目地址: https://gitcode.com/gh_mirrors/baid/BaiduPCS-Go 想要彻底告别繁琐的网页操作&#xff0c;用命令行高效管理你的百度网盘吗&#xff1f;BaiduPCS-Go作为一款功能…

作者头像 李华