您的位置:首页 > 编程语言 > Java开发

Java中抛出RuntimeException为什么不用显示声明

2016-02-17 16:57 531 查看
我们知道Java的异常类型体系结构如下:

        Throwable

         /            \

 Exception    Error

     /       \

        RuntimeException

我们可以看到RuntimeException的继承体系是Exception子类。而Exception还有其它类型的异常,我们统一称为非Runtime异常。RuntimeException的特点是非受检异常,也就是Java系统中允许可以不被catch,在运行时抛出。而其它定非运行时异常如果抛出的话必须显示的catch,否则编译不过。

那么为什么RuntimeException可以允许不被catch呢?

首先我们可以看看RuntimeException都有哪些子类型:

1 NullPointerException,这个不用多说了。

2 NumberFormatException,字符串转化成数字时。

3 ArrayIndexOutOfBoundsException, 数组越界时。

4 StringIndexOutOfBoundsException, 字符串越界时。

5 ClassCastException,类型转换时。

6 UnsupportedOperationException,该操作不支持,一般子类不实现父类的某些方法时。

7 ArithmeticException,零作为除数等。

8 IllegalArgumentException,表明传递了一个不合法或不正确的参数

可以看到大多数错误并不是由于程序本身有问题,而是运行时输入在某些case下导致的,有更多的不确定性。而且Java开始的时候并没有异常处理机制,所以从兼容性到实现代价来讲就设计成这个样子了。

原文:http://blog.csdn.net/hongchangfirst/article/details/50681244

作者:hongchangfirst

hongchangfirst的主页:http://blog.csdn.net/hongchangfirst
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: