1. 异常的结构
异常的基类为Throwable,它是Java中所有异常和错误的超类,Error和Exception都继承Throwable,由此得到异常的结构图如下:
1. Error
系统级错误,一般包括虚拟机错误和抽象窗口错误,这些都是比较严重的问题,代码中不应该试图catch该错误。虚拟机错误包括栈溢出(StackOverflowError),内存溢出(OutOfMemoryError)。
栈溢出一般是无限次递归才会出现,内存溢出则是当应用申请的内存大于系统可分配的内存时才会出现。
2. Exception
表示的是一种设计或实现问题,程序正常运行是不会出现的。Exception继承Throwabale,而RuntimeException和IOException继承Exception。
1) NullPointerException(空指针异常)、IndexOutOfBoundsExcepiton(数组越界异常)等继承RuntimeException。
2) EOFException(输入过程意外地达到文件或流的末尾), FileNotFoundException(文件未找到)继承IOException。
3. 异常的分类
异常按check类型可以分为UnCheckedException(未检查异常)、CheckedException(已检查异常)。
** UnCheckedException: Error和RuntimeException(执行时所产生的)及其子类成为未检查异常(unchecked)
** CheckedException:除了 Error 与 RuntimeException ,其他剩下的异常 ,这类异常都是 Exception 的子类,在编译时在语法上必须处理的异常,因此必须在语法上以 try...catch语句进行处理。