如何在Java中处理NumberFormatException(非受检异常)?


NumberFormatException是一个非受检异常,当parseXXX()方法无法将字符串格式化(转换)为数字时抛出。

NumberFormatException可能由java.lang包中类的许多方法/构造函数抛出。以下是一些例子。

  • public static int parseInt(String s) throws NumberFormatException
  • public static Byte valueOf(String s) throws NumberFormatException
  • public static byte parseByte(String s) throws NumberFormatException
  • public static byte parseByte(String s, int radix) throws NumberFormatException
  • public Integer(String s) throws NumberFormatException
  • public Byte(String s) throws NumberFormatException

每种方法都有定义可能抛出NumberFormatException的情况。例如,public static int parseInt(String s) throws NumberFormatException 当:

  • 字符串s为空或s的长度为零。
  • 如果字符串s包含非数字字符。
  • 字符串s的值不能表示为整数。

示例1

在线演示

public class NumberFormatExceptionTest {
   public static void main(String[] args){
      int x = Integer.parseInt("30k");
      System.out.println(x);
   }
}

输出

Exception in thread "main" java.lang.NumberFormatException: For input string: "30k"
       at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
       at java.lang.Integer.parseInt(Integer.java:580)
       at java.lang.Integer.parseInt(Integer.java:615)
       at NumberFormatExceptionTest.main(NumberFormatExceptionTest.java:3)


如何处理NumberFormatException

我们可以通过两种方式处理NumberFormatException

  • 使用try和catch块包围可能导致NumberFormatException的代码。
  • 另一种处理异常的方法是使用throws关键字。

示例2

在线演示

public class NumberFormatExceptionHandlingTest {
   public static void main(String[] args) {
      try {
         new NumberFormatExceptionHandlingTest().intParsingMethod();
      } catch (NumberFormatException e) {
         System.out.println("We can catch the NumberFormatException");
      }
   }
   public void intParsingMethod() throws NumberFormatException{
      int x = Integer.parseInt("30k");
      System.out.println(x);
   }
}

在上面的例子中,方法intParsingMethod()Integer.parseInt(“30k”)抛出的异常对象抛给它的调用方法,在本例中是main()方法。

输出

We can catch the NumberFormatException

更新于:2020年2月6日

2K+ 次浏览

开启您的职业生涯

完成课程获得认证

开始学习
广告