Java异常类解析

1 层次结构

  Java异常层次结构如下图所示,所有的异常类都是从Throwable继承而来,下一层则分为两个结构,Error和Exception。

Throwable  -|<---Error     -|<---VirtualMachineError   -|<---OutOfMemoryError
            |               |                           |<---StackOverflowError
            |               |                           |<---UnknownError
            |               |
            |               |<---IOError
            |               |<---AWTError
            |               |<---ThreadDeath
            |
            |<---Exception -|<---RuntimeException      -|<---IndexOutOfBoundsException
                            |                           |<---NullPointerException
                            |                           |<---IllegalArgumentException
                            |                           |<---ArithmeticException
                            |                           |<---ClassCastException
                            |                           |<---ConcurrentModificationException
                            |                           |<---EmptyStackException
                            |                           |<---NoSuchElementException
                            |                           |<---BufferOverflowException
                            |                           |<---UnknownTypeException
                            |
                            |<---ClassNotFoundException
                            |<---IOException
                            |<---SAXException
                            |<---SQLException
                            |<---InterruptedException
                            |<---TimeoutException
                            |<---llegalClassFormatException
                            |<---DataFormatException
                            |<---AWTException

2 error异常和exception异常

  1. Error类层次描述了Java运行时系统的内部错误和资源耗尽错误,在java的虚拟机中发生,用户无需在程序中捕捉或者抛出,属于unchecked exception。
  2. Exception类异常主要分为两大类:一般异常、RuntimeException。其中RuntimeException属于unchecked exception,一般异常属于checked exception。
    这里写图片描述

3 checked exception和unchecked exception

  Java语言规范对这两个定义十分简单,将派生于Error或者RuntimeException的异常称为unchecked异常,所有其他的异常成为checked异常。
checked exception:一般是指程序不能直接控制的外界情况,是指在编译的时候就需要检查的一类exception,用户程序中必须采用try catch机制处理或者通过throws交由调用者来处理。
unchecked exception:是指那些不需要在编译的时候就要处理的一类异常。在java体系里,所有的Error以及RuntimeException及其子类都是unchecked异常。

4 为什么要对unchecked异常和checked异常进行区分?

  编译器将检查是否为所有的checked exception提供了异常处理机制,比如说我们使用Class.forName()来查找给定的字符串的class对象的时候,如果没有为这个方法提供异常处理,编译是无法通过的。

5 我们应该对哪些异常进行声明?

  Java规范中并没有对unchecked exception是否抛出进行限制,unchecked exception要么是可以避免的(Runtime Exception),要么是不可控制的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值