NumberFormatException异常为什么不需要捕获?

个人博客原文链接
更多文章欢迎访问个人博客站点
 

在写数字字符串转数字的过程(Integer a = Integer.parseInt("123");)发现此静态方法抛出了NumberFormatException异常,但实际代码中并没有要求try/catch处理或者继续向上抛出异常,很是诧异,因此查询了资料,现在记录如下。

 

异常源码信息
此方法的源码为:

    public static int parseInt(String s) throws NumberFormatException {
        return parseInt(s,10);
    }
说明需要抛出的异常类型是:NumberFormatException,其定义类的源码如下:

public class NumberFormatException extends IllegalArgumentException {}
 

IllegalArgumentException类定义如下:

public class IllegalArgumentException extends RuntimeException {}
 

类的继承关系

类的继承关系
可见NumberFormatException是RuntimeException的子类,根据查询的资料,RuntimeException异常以及抛出的其子类异常是不需要try/catch捕获的异常。也就是说RuntimeException不需要强制try/catch捕获,而非RuntimeException异常则需要进行捕获处理.

总结如下:

CheckedException:在程序中必须使用try...catch进行处理。
RuntimeException:可以不使用try...catch进行处理,但是如果有异常产生,则异常将由JVM进行处理。

对于RuntimeException的子类最好也使用异常处理机制。虽然RuntimeException的异常可以不使用try…catch进行处理,但是如果一旦发生异常,则肯定会导致程序中断执行,所以,为了保证程序再出错后依然可以执行,在开发代码时最好使用try…catch的异常处理机制进行处理。

常见RuntimeException异常
1、NullPointerException:见的最多了,其实很简单,一般都是在null对象上调用方法了。

2 NumberFormatException:继承IllegalArgumentException,字符串转换为数字时出现。比如int i= Integer.parseInt(“ab3”);

3、ArrayIndexOutOfBoundsException:数组越界。比如 int[] a=new int[3]; int b=a[3];

4、StringIndexOutOfBoundsException:字符串越界。比如 String s=”hello”; char c=s.chatAt(6);

5、ClassCastException:类型转换错误。比如 Object obj=new Object(); String s=(String)obj;

6、UnsupportedOperationException:该操作不被支持。如果我们希望不支持这个方法,可以抛出这个异常。既然不支持还要这个干吗?有可能子类中不想支持父类中有的方法,可以直接抛出这个异常。

7、ArithmeticException:算术错误,典型的就是0作为除数的时候。

8、IllegalArgumentException:非法参数,在把字符串转换成数字的时候经常出现的一个异常,我们可以在自己的程序中好好利用这个异常
————————————————
版权声明:本文为CSDN博主「燕归来兮_」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_20221151/article/details/82556230

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值