在Java中如何捕获IllegalArgumentException

使用try-catch捕获IllegalArgumentException可提升程序健壮性,如Integer.parseInt(“abc”)抛出NumberFormatException(其子类)时能被catch块处理;业务中可主动抛出该异常并捕获,如setAge(-5)时提示“年龄必须在0到150之间”;也可合并捕获多个异常,用|分隔类型,统一处理参数校验问题。

在java中如何捕获illegalargumentexception

在Java中捕获 IllegalArgumentException 的方法与其他异常一样,使用 try-catch 语句块即可。这个异常通常表示传入方法的参数不合法或不符合要求,属于运行时异常(RuntimeException),虽然不是强制捕获的,但在某些场景下提前处理能提升程序健壮性。

使用 try-catch 捕获 IllegalArgumentException

将可能抛出该异常的代码放在 try 块中,并用 catch 捕获 IllegalArgumentException:

try {    Integer.parseInt("abc");} catch (IllegalArgumentException e) {    System.out.println("参数非法:" + e.getMessage());}

上面的例子中,Integer.parseInt() 实际上抛出的是 NumberFormatException,它是 IllegalArgumentException 的子类,因此也能被成功捕获。

主动抛出并捕获自定义的 IllegalArgumentException

在业务逻辑中,可以手动检查参数并抛出异常,再进行捕获处理:

千面视频动捕 千面视频动捕

千面视频动捕是一个AI视频动捕解决方案,专注于将视频中的人体关节二维信息转化为三维模型动作。

千面视频动捕 27 查看详情 千面视频动捕

立即学习“Java免费学习笔记(深入)”;

public void setAge(int age) {    if (age  150) {        throw new IllegalArgumentException("年龄必须在 0 到 150 之间");    }    // 正常处理}// 调用时捕获try {    setAge(-5);} catch (IllegalArgumentException e) {    System.out.println("错误:" + e.getMessage());}

捕获多个异常的情况

如果一段代码可能抛出多种异常,可以分别处理,也可以合并处理:

try {    someMethod(null);} catch (IllegalArgumentException | NullPointerException e) {    System.err.println("参数相关异常:" + e.getMessage());}

这样可以统一处理与参数校验相关的异常类型。

基本上就这些。只要把可能出问题的代码放进 try 块,明确 catch IllegalArgumentException,就能有效应对参数不合法的情况。

以上就是在Java中如何捕获IllegalArgumentException的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/287757.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小团队 大创意 《潜水员戴夫》工作室将继续制作低成本游戏
上一篇 2026年10月20日 04:13:17
Python正则表达式怎么用?文本匹配技巧
下一篇 2025年12月14日 07:06:19

相关推荐

  • 在Java中如何使用命令行运行Java程序_Java命令行开发方法分享

    在Java中如何使用命令行运行Java程序_Java命令行开发方法分享在Java中如何使用命令行运行Java程序_Java命令行开发方法分享在Java中如何使用命令行运行Java程序_Java命令行开发方法分享在Java中如何使用命令行运行Java程序_Java命令行开发方法分享

    首先编译Java源文件生成class文件,再通过java命令运行;若含包结构需按目录存放并使用完整类名执行;可传递参数给main方法,并用-cp指定类路径加载外部依赖。 在Java中使用命令行运行程序是开发中的基础技能,尤其适用于学习、调试和轻量级项目。掌握命令行操作能帮助你更深入理解Java编译与…

    2026年10月20日 • 用户投稿
    000
  • VS Code插件开发:从零构建完整扩展流程

    VS Code插件开发:从零构建完整扩展流程VS Code插件开发:从零构建完整扩展流程VS Code插件开发:从零构建完整扩展流程VS Code插件开发:从零构建完整扩展流程

    答案:掌握VS Code插件开发需经历初始化、编码、调试、打包与发布四步。首先通过Yo Code生成项目结构,推荐使用TypeScript;在extension.ts中注册命令并实现功能逻辑,如弹出消息或监听事件;利用内置调试模式(F5)测试扩展行为;最后安装vsce工具登录账号并发布至市场。整个流…

    2026年10月20日 • 用户投稿
    100
  • Java中如何通过ConcurrentSkipListMap实现有序并发Map

    Java中如何通过ConcurrentSkipListMap实现有序并发MapJava中如何通过ConcurrentSkipListMap实现有序并发MapJava中如何通过ConcurrentSkipListMap实现有序并发MapJava中如何通过ConcurrentSkipListMap实现有序并发Map

    ConcurrentSkipListMap是Java中基于跳跃表实现的线程安全有序Map,支持高并发下O(log n)时间复杂度的插入、删除和查找操作,1. 它实现了SortedMap和ConcurrentMap接口,2. 默认按自然顺序排序键,也可通过Comparator自定义排序规则,3. 遍历…

    2026年10月20日 • 用户投稿
    100
  • 使用VSCode的Snippets创建自定义代码片段

    在VSCode中创建自定义代码片段可大幅提升编码效率,通过设置全局或语言级JSON模板,用prefix触发包含占位符的代码块,支持变量与多光标同步,保存后即生效。 在vscode中,代码片段(snippets)能大幅提升编码效率。通过定义常用代码模板,你可以用简短的触发词快速生成结构化代码。下面是如…

    2026年10月20日
    100
  • 在Java中如何使用UUID生成唯一标识符_UUID使用技巧指南

    在Java中如何使用UUID生成唯一标识符_UUID使用技巧指南在Java中如何使用UUID生成唯一标识符_UUID使用技巧指南在Java中如何使用UUID生成唯一标识符_UUID使用技巧指南在Java中如何使用UUID生成唯一标识符_UUID使用技巧指南

    答案:Java中UUID通过randomUUID()生成唯一标识,适用于分布式系统。可解析字符串、比较排序,建议存储用BINARY(16)、避免自定义算法,线程安全,常用于主键、会话ID等场景。 在Java中,UUID(Universally Unique Identifier)是一种用于生成全局唯…

    2026年10月20日 • 用户投稿
    000
  • 360浏览器极速模式和兼容模式有什么区别_360浏览器双核模式切换及原理对比

    360浏览器因双核架构导致网页显示异常时,可切换极速或兼容模式解决。极速模式采用Blink内核,适用于HTML5、CSS3等现代网站,加载快、交互流畅;兼容模式使用Trident内核,支持IE依赖的ActiveX控件,适合政府网站、银行网银等老旧系统。用户可通过地址栏“闪电”图标手动切换模式,或在设…

    2026年10月20日
    100
  • 如何理解Java中类的静态成员共享特性

    如何理解Java中类的静态成员共享特性如何理解Java中类的静态成员共享特性如何理解Java中类的静态成员共享特性如何理解Java中类的静态成员共享特性

    静态成员属于类而非对象,所有实例共享同一副本。①静态变量被所有实例共享,任意修改均全局生效;②静态方法不依赖实例,可直接通过类调用,但不能访问非静态成员;③存储于方法区,类加载时初始化,生命周期贯穿整个程序运行期;④注意内存占用、线程安全及共享状态管理。 在Java中,静态成员(包括静态变量和静态方…

    2026年10月20日 • 用户投稿
    1100
  • VS Code配置分层:默认设置与用户偏好管理解析

    VS Code配置分层:默认设置与用户偏好管理解析VS Code配置分层:默认设置与用户偏好管理解析VS Code配置分层:默认设置与用户偏好管理解析VS Code配置分层:默认设置与用户偏好管理解析

    VS Code配置分层包括默认、用户、工作区及语言级设置:默认设置为初始行为,用户设置定义个人偏好,工作区设置实现项目统一,语言级设置提供细粒度控制,四者协同提升开发效率与团队协作一致性。 在使用 Visual Studio Code(简称 VS Code)进行开发时,合理管理配置是提升效率的关键。…

    2026年10月20日 • 用户投稿
    1000
  • 如何在Lombok对象中强制要求两个可空字段至少一个存在

    如何在Lombok对象中强制要求两个可空字段至少一个存在如何在Lombok对象中强制要求两个可空字段至少一个存在如何在Lombok对象中强制要求两个可空字段至少一个存在如何在Lombok对象中强制要求两个可空字段至少一个存在

    本文探讨了在lombok生成的java对象中,如何为两个可空字段(例如`maybea`和`maybeb`)设置一个约束,即它们不能同时为null,至少其中一个必须存在。通过结合使用`javax.validation.constraints.assertfalse`注解和一个自定义的验证方法,我们能够…

    2026年10月20日 • 用户投稿
    000
  • 配置VSCode使用SSH密钥连接远程Git仓库

    配置VSCode使用SSH密钥连接远程Git仓库配置VSCode使用SSH密钥连接远程Git仓库配置VSCode使用SSH密钥连接远程Git仓库配置VSCode使用SSH密钥连接远程Git仓库

    首先生成SSH密钥对并保存至默认路径,接着将公钥添加到Git服务器的SSH设置中,然后通过ssh -T命令测试连接,最后在VSCode中使用SSH地址克隆或修改远程仓库,实现无密码认证。 使用SSH密钥连接远程Git仓库可以避免重复输入用户名和密码,提升开发效率。VSCode结合SSH配置能让你在编…

    2026年10月20日 • 用户投稿
    400
  • JPA CriteriaDelete与in子查询:确保数据操作正确执行

    JPA CriteriaDelete与in子查询:确保数据操作正确执行JPA CriteriaDelete与in子查询:确保数据操作正确执行JPA CriteriaDelete与in子查询:确保数据操作正确执行JPA CriteriaDelete与in子查询:确保数据操作正确执行

    本文旨在解决jpa `criteriadelete`结合`in`表达式和子查询时,数据删除操作不生效的问题。核心原因在于执行dml操作(如删除)后,必须显式调用`javax.persistence.query`对象的`executeupdate()`方法,而非仅创建查询。文章将通过详细解析和示例代码…

    2026年10月20日 • 用户投稿
    000
  • Spring Integration多实例IMAP邮件接收与去重指南

    本文探讨在Spring Integration多实例Spring Boot应用中,如何有效避免IMAP邮件的重复处理。我们将详细介绍利用IMAP协议的“已读”标记特性、Spring Integration的领导者选举机制以及幂等接收器模式,确保邮件在分布式环境中被唯一且可靠地消费,从而防止数据重复处…

    2026年10月20日
    200
  • 解决Gradle $projectDir 未知属性错误的指南

    解决Gradle $projectDir 未知属性错误的指南解决Gradle $projectDir 未知属性错误的指南解决Gradle $projectDir 未知属性错误的指南解决Gradle $projectDir 未知属性错误的指南

    本文旨在解决gradle构建脚本中常见的`could not get unknown property ‘$projectdir’`错误。该问题通常源于在`build.gradle`文件中引用`$projectdir`变量时,路径字符串缺少双引号,导致gradle将其误识别为…

    2026年10月20日 • 用户投稿
    100
  • Java中利用正则表达式与后处理精确提取复杂字符串中的动态分组数据

    本文详细阐述了如何从结构复杂、包含动态分组的字符串中,精确提取特定信息。针对传统正则表达式在处理可变数量分组时的局限性,我们提出了一种两阶段解决方案:首先,利用强大的正则表达式进行初步匹配,捕获固定部分和所有动态数据作为一个整体;随后,通过程序化后处理,巧妙地将动态数据拆分为所需的多个独立分组。本教…

    2026年10月20日
    100
  • Java中链表对象引用的正确管理与实现

    Java中链表对象引用的正确管理与实现Java中链表对象引用的正确管理与实现Java中链表对象引用的正确管理与实现Java中链表对象引用的正确管理与实现

    在java中,尝试直接通过`this`关键字重新分配对象引用是不允许的。当实现链表等数据结构时,正确的做法是引入一个辅助的“节点”(node)类来封装数据和指向下一个元素的引用。主链表类则负责维护链表的头尾节点,并通过操作这些节点内部的引用来增删元素,而非直接修改链表对象本身的引用。 理解Java中…

    2026年10月20日 • 用户投稿
    100
  • 精通VSCode代码审查与质量检查工具集成

    精通VSCode代码审查与质量检查工具集成精通VSCode代码审查与质量检查工具集成精通VSCode代码审查与质量检查工具集成精通VSCode代码审查与质量检查工具集成

    配置VSCode代码审查工具链可提升代码质量与团队协作效率。首先集成ESLint、Pylint等静态分析工具,安装对应扩展并配置规则文件如.eslintrc.json,启用保存时自动修复功能;接着通过GitLens和GitHub Pull Requests扩展增强版本控制与代码评审,支持行级历史查看…

    2026年10月20日 • 用户投稿
    100
  • Spring Integration JMS并发事务性消息消费指南

    Spring Integration JMS并发事务性消息消费指南Spring Integration JMS并发事务性消息消费指南Spring Integration JMS并发事务性消息消费指南Spring Integration JMS并发事务性消息消费指南

    本教程旨在解决Spring Integration中异步JMS消息消费与事务性保障的挑战。通过深入探讨`Jms.channel()`结合`concurrentConsumers()`配置,文章展示了如何实现真正并发且具备事务回滚机制的消息处理,避免了传统`Jms.pollableChannel`的顺…

    2026年10月20日 • 用户投稿
    1000
  • 在Java中如何使用AtomicIntegerFieldUpdater实现字段原子操作_字段原子更新技巧

    在Java中如何使用AtomicIntegerFieldUpdater实现字段原子操作_字段原子更新技巧在Java中如何使用AtomicIntegerFieldUpdater实现字段原子操作_字段原子更新技巧在Java中如何使用AtomicIntegerFieldUpdater实现字段原子操作_字段原子更新技巧在Java中如何使用AtomicIntegerFieldUpdater实现字段原子操作_字段原子更新技巧

    AtomicIntegerFieldUpdater通过反射对volatile int字段实现原子操作,避免额外内存开销。必须满足字段为volatile、非private(或同类中创建)、非static,使用newUpdater创建实例。提供incrementAndGet、compareAndSet等…

    2026年10月20日 • 用户投稿
    200
  • 在Java中如何处理FileNotFoundException并提示用户_文件异常友好提示指南

    在Java中如何处理FileNotFoundException并提示用户_文件异常友好提示指南在Java中如何处理FileNotFoundException并提示用户_文件异常友好提示指南在Java中如何处理FileNotFoundException并提示用户_文件异常友好提示指南在Java中如何处理FileNotFoundException并提示用户_文件异常友好提示指南

    捕获FileNotFoundException并输出友好提示,如“找不到指定文件,请检查路径是否正确”,同时记录日志便于排查,提升程序稳定性和用户体验。 当Java程序尝试访问一个不存在的文件或因权限问题无法读取文件时,会抛出FileNotFoundException。直接将异常堆栈暴露给用户会影响…

    2026年10月20日 • 用户投稿
    500
  • JPA CriteriaDelete 与子查询:确保数据删除操作正确执行的关键

    JPA CriteriaDelete 与子查询:确保数据删除操作正确执行的关键JPA CriteriaDelete 与子查询:确保数据删除操作正确执行的关键JPA CriteriaDelete 与子查询:确保数据删除操作正确执行的关键JPA CriteriaDelete 与子查询:确保数据删除操作正确执行的关键

    本文旨在解决jpa中`criteriadelete`结合子查询进行数据删除时,操作不生效的问题。核心原因在于,通过`entitymanager.createquery()`创建的删除查询对象需要显式调用`executeupdate()`方法才能实际执行dml操作,而非查询操作常用的`getresul…

    2026年10月19日 • 用户投稿
    100

发表回复

登录后才能评论
关注微信