Java异常类解析

来源:互联网 发布:zip解压软件下载mac版 编辑:程序博客网 时间:2024/05/29 02:03

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),要么是不可控制的。

0 0
原创粉丝点击