如何解决 Java 中的 IllegalArgumentException 异常?

这篇具有很好参考价值的文章主要介绍了如何解决 Java 中的 IllegalArgumentException 异常?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

非法参数异常(IllegalArgumentException)的抛出是为了表明一个方法被传递了一个非法参数。该异常扩展了 RuntimeException 类,因此属于在 Java 虚拟机(JVM)运行期间可能抛出的异常。它是一种未检查异常,因此不需要在方法或构造函数的 throws 子句中声明。文章来源地址https://www.toymoban.com/news/detail-766352.html

出现 java.lang.IllegalArgumentException 的原因

  • 当参数超出范围时。例如,百分比应介于 1 到 100 之间。如果用户输入的是 101,则将抛出 IllegalArugmentExcpetion。
  • 参数格式无效时。例如,如果我们的方法需要 YYYY/MM/DD 这样的日期格式,但如果用户传递的是 YYYY-MM-DD。那么我们的方法就无法理解,就会抛出 IllegalArugmentExcpetion。
  • 当一个方法需要非空字符串作为参数,但传递的却是空字符串时。

示例

public class Student {
   int m;
   public void setMarks(int marks) {
      if(marks < 0 || marks > 100)
         throw new IllegalArgumentException(Integer.toString(marks));
      else
         m = marks;
   }
   public static void main(String[] args) {
      Student s1 = new Student();
      s1.setMarks(45);
      System.out.println(s1.m);
      Student s2 = new Student();
      s2.setMarks(101);
      System.out.println(s2.m);
   }
}

输出

45
Exception in thread "main" java.lang.IllegalArgumentException: 101
	at Student.setMarks(Student.java:5)
	at Student.main(Student.java:14)

解决 IllegalArgumentException 的步骤

  • 当抛出 IllegalArgumentException 时,我们必须检查 Java 堆栈跟踪中的调用堆栈,找出产生错误参数的方法。
  • IllegalArgumentException 非常有用,可用于避免应用程序的代码必须处理未经检查的输入数据的情况。
  • IllegalArgumentException 的主要用途是验证来自其他用户的输入。
  • 如果要捕获 IllegalArgumentException,我们可以使用 try-catch 块。通过这样做,我们可以处理某些情况。假设我们在 catch 代码块中加入代码,让用户有机会再次输入,而不是停止执行,尤其是在循环的情况下。

示例

import java.util.Scanner;
public class Student {
   public static void main(String[] args) {
      String cont = "y";
      run(cont);
   }
   static void run(String cont) {
      Scanner scan = new Scanner(System.in);
      while( cont.equalsIgnoreCase("y")) {
         try {
            System.out.println("Enter an integer: ");
            int marks = scan.nextInt();
            if (marks < 0 || marks > 100)
               throw new IllegalArgumentException("value must be non-negative and below 100");
            System.out.println( marks);
         } catch(IllegalArgumentException i) {
            System.out.println("out of range encouneterd. Want to continue");
            cont = scan.next();
            if(cont.equalsIgnoreCase("Y"))
               run(cont);
         }
      }
   }
}

输出

Enter an integer:
1
1
Enter an integer:
100
100
Enter an integer:
150
out of range encouneterd. Want to continue
y
Enter an integer:

到了这里,关于如何解决 Java 中的 IllegalArgumentException 异常?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • java.lang.IllegalArgumentException: Last unit does not have enough valid bits 异常的解决

    本文主要jwt出现的异常问题,如果有什么需要改进的地方还请大佬指出⛺️ 🎬作者简介:大家好,我是青衿🥇 ☁️博客首页:CSDN主页放风讲故事 🌄每日一句:努力一点,优秀一点 使用封装好的 JwtUtil 的工具类时,自定义设置 秘钥明文 ,启动后报错: 报错信息: 报错信

    2024年02月04日
    浏览(54)
  • java.lang.IllegalArgumentException: This Style does not belong to the supplied Workbook异常的解决办法

    java.lang.IllegalArgumentException: This Style does not belong to the supplied Workbook异常的解决办法 java.lang.IllegalArgumentException: This Style does not belong to the supplied Workbook异常 在Java中,当你尝试在一个Workbook(例如Apache POI库中的HSSFWorkbook或XSSFWorkbook)上应用一个Style对象,但该Style不是由同一个

    2024年04月28日
    浏览(77)
  • 解决Java中的IOException异常

    IOException是Java中的一个受检查异常(Checked Exception)。它是java.io包中定义的异常类之一,用于表示输入输出操作期间可能发生的错误或异常情况。 IOException继承自Exception类,并且是许多其他与输入输出相关的异常类的基类。它是一个广泛的异常类,用于处理与输入输出操作相

    2024年02月15日
    浏览(137)
  • 记报错信息:java.lang.IllegalArgumentException: MALFORMED解决方案

    在调用JDK自带的zipfile读取压缩包文件的时候,出现了以下错误: SjXcmcFeignClient:124 - BaseFeignClient 拦截到【未知系统异常】Exception异常: java.lang.IllegalArgumentException: MALFORMED[1] at java.util.zip.ZipCoder.toString(ZipCoder.java:65) at java.util.zip.ZipFile.getZipEntry(ZipFile.java:583) at java.util.zip.ZipFile.ac

    2024年02月05日
    浏览(56)
  • 解决错误 “java.lang.IllegalArgumentException: invalid comparison: java.util.Date and java.lang.String“ 的

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 在 Java 开发中,有时会遇到错误信息 “java.lang.IllegalArgumentException: invalid comparison: java.util.Date and java.lang.String”,

    2024年02月10日
    浏览(58)
  • Java IllegalArgumentException: Property ‘sqlSessionFactory‘ or ‘sqlSessionTemplate‘ are required问题解决

    java.lang.IllegalArgumentException: Property \\\'sqlSessionFactory\\\' or \\\'sqlSessionTemplate\\\' are required 1、一个项目有多个启动模块,一个核心模块,启动模块引用核心模块的代码,只有一个启动模块支持多数据源,其余启动模块还是单数据源,所以不支持多数据源的启动模块引用核心模块时加了

    2024年02月03日
    浏览(40)
  • 报错java.lang.IllegalArgumentException: Unsupported class file major version 60的解决方案

    使用 maven 集成 spring 在测试的时候报出了如下的异常: Caused by: java.lang.IllegalArgumentException: Unsupported class file major version 60 这个错误意思大概就是:非法参数异常,不支持的类文件主版本60。 猜想应该是版本兼容问题,查找项目中只集成了 spring-context ,版本是 5.2.4.RELEASE ,而

    2024年02月07日
    浏览(63)
  • 已解决java.lang.IllegalArgumentException: Invalid character found in the request target.

    已解决java.lang.IllegalArgumentException: Invalid character found in the request target. 下滑查看解决方法 java.lang.IllegalArgumentException: Invalid character found in the request target. 对于Java.lang.IllegalArgumentException: Invalid character found in the request target的错误,可能是由于URL中包含了非法字符所致。 下滑查看

    2024年02月16日
    浏览(51)
  • idea使用maven时的java.lang.IllegalArgumentException: Malformed \uxxxx encoding问题解决

    最近安装了新的idea,莫名其妙的报了这个错误java.lang.IllegalArgumentException: Malformed uxxxx encoding,折腾了好几天终于解决。 下面记录一下解决办法 打开idea右边的maven-》工程根目录–》debug maven–》compile 当运行断点错误的时候,会有各个变量的值。将in的数据拿出来,就能看到

    2024年02月10日
    浏览(36)
  • java.lang.IllegalArgumentException: Param ‘serviceName‘ is illegal, serviceName is blank 报错解决

    ​ 目录 前言 系列文章目录 一、项目启动报错 1、报错截图 2、错误信息 二、解决方案 1.错误原因 2.排查建议   前言 本篇博客使用Spring Cloud 2021版本、Nacos 1.4.0、Spring Boot 2.7.6  Spring Boot2.0系列教程合集、Spring Cloud系列教程合集、Spring Boot常见错误合集、Spring Cloud常见错误合集

    2024年02月11日
    浏览(77)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包