Java 异常简述
定义
在《Java 编程思想》中说道,异常情形(exceptional condition)是指阻止当前方法或作用域继续执行的问题。换句通俗的话说既:程序执行中发生的不正常的情况称为异常。
分类
按结构
Error:是程序无法处理的错误,表示运行应用程序中较严重问题。大多数错误与代码编写者执行的操作无关,而是 Java 运行时系统的内部错误和资源耗尽错误。如 StackOverflowError 和 OutOfMemoryError。这类情况下,一般不编写针对性的代码处理。
Exception:是通过程序可以处理的问题。在《Java 核心技术 券 I》中说道:这个层次结构又分解为两个分支:一个分支派生与 RuntimeException;另一个分支包含其它异常。划分两个分支的规则是:由程序错误导致的异常属于 RuntimeException;而程序本身没有问题,但由于像 I/O 错误这类问题导致的异常属于其他异常。
上述二者简单结构如下图:
按发现时间
- 运行时异常
指编译器不要求强制处置的异常。一般是指编程时的逻辑错误。Error 和 java.lang.RuntimeException(包含子类)都是属于运行时异常。 - 编译时异常
是指编译器要求必须处置的异常。即程序在运行时由于外界因素造成的一般性异常。比如: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 | 未找到方法异常 |