Java 中的 NumberFormatException

2025年3月17日 | 阅读 3 分钟

当尝试将一个字符串转换为数字值(如浮点数或整数)但输入字符串的格式不正确或非法时,会抛出 NumberFormatException。格式不正确或非法意味着,如果您尝试将一个字符串解析为整数,但该字符串包含布尔值,则其格式为非法。例如,如果我们尝试将字符串解析为整数,但该字符串为 null。

这是一个未检查的异常。它是 IllegalArgumentException 的子类,并实现了 Serializable 接口。

NumberFormatException 的构造函数

构造函数描述
NumberFormatException()此构造函数创建一个没有指定详细消息的 NumberFormatException。
NumberFormatException(String s)此构造函数使用字符串 s 中的指定详细消息创建 NumberFormatException。

NumberFormatException 示例

输出

NumberFormatException in Java

NumberFormatException 的常见原因

由于 NumberFormatException 是由于字符串格式不适合抛出异常的方法的相应参数而引起的,因此可能存在多种原因。以下是一些:

  • 提供的输入字符串可能为 null:
    示例- Integer.parseInt(null);
  • 输入字符串可能为空:
    示例- Integer.parseInt("");
  • 输入字符串可能包含尾随空格:
    示例- Integer.parseInt("123 ");
  • 输入字符串可能包含前导空格:
    示例- Integer.parseInt(" 123");
  • 输入字符串可能是字母数字的:
    示例- Long.parseLong("b2");
  • 输入字符串可能包含超出存储解析后字符串的数据类型的范围的值:
    示例- Integer.parseInt("135"); 整数的最大可能值为 127,但字符串中的值为 135,超出了范围,因此会抛出异常。
  • 输入字符串与用于解析的方法类型可能不匹配。如果您提供 "1.0" 这样的输入字符串,并尝试将其转换为整数值,则会抛出 NumberFormatException 异常。
    示例- Integer.parseInt("1..0");

如何避免 NumberFormatException?

NumberFormatException 主要是由于在将输入字符串解析为数值时,字符串格式不正确或非法而引起的。因此,要避免此异常,必须使提供的输入字符串格式正确。

为了使字符串有效且格式正确,首先要检查输入字符串是否不为 null。然后,检查不必要的空格并将其全部修剪掉,之后进行多项检查,以验证参数字符串是否与我们用于解析字符串的方法的类型匹配。如果方法是 ParseInt(),请检查字符串是否为整数值,依此类推,对所有其他方法进行必要的检查。

为了防止 Java 程序生成 NumberFormatException,最好将可能抛出此异常的代码行 enclosed 在 try-catch 块中,如下所示:


下一个主题Java 教程