Java 异常简述

定义

在《Java 编程思想》中说道,异常情形(exceptional condition)是指阻止当前方法或作用域继续执行的问题。换句通俗的话说既:程序执行中发生的不正常的情况称为异常。

分类

按结构

Error:是程序无法处理的错误,表示运行应用程序中较严重问题。大多数错误与代码编写者执行的操作无关,而是 Java 运行时系统的内部错误和资源耗尽错误。如 StackOverflowError 和 OutOfMemoryError。这类情况下,一般不编写针对性的代码处理。

Exception:是通过程序可以处理的问题。在《Java 核心技术 券 I》中说道:这个层次结构又分解为两个分支:一个分支派生与 RuntimeException;另一个分支包含其它异常。划分两个分支的规则是:由程序错误导致的异常属于 RuntimeException;而程序本身没有问题,但由于像 I/O 错误这类问题导致的异常属于其他异常。

上述二者简单结构如下图:
Java 异常简述

按发现时间

  1. 运行时异常
    指编译器不要求强制处置的异常。一般是指编程时的逻辑错误。Error 和 java.lang.RuntimeException(包含子类)都是属于运行时异常。
  2. 编译时异常
    是指编译器要求必须处置的异常。即程序在运行时由于外界因素造成的一般性异常。比如:IOException、ClassNotFoundException。

常见异常

以下内容摘抄于 详解Java中的异常(Error与Exception) 内容。

RuntimeException:

序号 名称 描述
1 java.lang.ArrayIndexOutOfBoundsException 数组索引越界异常。当对数组的索引值为负数或大于等于数组大小时抛出。
2 java.lang.ArithmeticException 算术条件异常。譬如:整数除零等。
3 java.lang.IllegalArgumentException 非法参数异常
4 java.lang.NegativeArraySizeException 数组长度为负异常
5 java.lang.NullPointerException 空指针异常。当应用试图在要求使用对象的地方使用了null时,抛出该异常。

IOException

序号 名称 描述
1 IOException 操作输入流和输出流时可能出现的异常
2 EOFException 文件已结束异常
3 FileNotFoundException 为找到文件异常

其他

序号 名称 描述
1 ClassCastException 类型转换异常
2 ArrayStoreException 数组中包含不兼容数据异常
3 SQLException 操作数据库异常
4 NoSuchFieldException 未找到字段异常
5 NoSuchMethodException 未找到方法异常