--Error class--
--非检查性异常--
ArithmeticException
x / 0
ArrayIndexOutOfBoundsException
用非法索引访问数组。若索引为负或大于等于数组大小, 则该索引为非法索引
ArrayStoreException
试图将错误类型的对象存储到一个对象数组
ClassCastException
试图将对象强制转换为不是实例的子类
IllegalArgumentException
向方法传递了一个不合法或不正确的参数
IllegalMonitorStateException
某一线程已经试图等待对象的监视器,或者试图通知其他正在等待对象的监视器而本身没有指定监视器的线程
IllegalStateException
在非法或不适当的时间调用方法时产生的信号, 即 Java 环境或 Java 应用程序没有处于请求操作所要求的适当状态下
IllegalThreadStateException
线程没有处于请求操作所要求的适当状态
IndexOutOfBoundsException
排序索引(如对数组、字符串或向量的排序)超出范围
NegativeArraySizeException
试图创建大小为负的数组
NullPointerException
试图在需要对象的地方使用 null (空指针)
NumberFormatException
试图将字符串转换成一种数值类型,但该字符串不能转换为适当格式
SecurityException
来自安全管理器,指示存在安全侵犯
StringIndexOutOfBoundsException
来自String方法,指示索引或者为负,或者超出字符串的大小
UnsupportedOperationException
不支持请求的操作
--检查性异常--
ClassNotFoundException
未找到尝试加载的类
CloneNotSupportedException
调用 Object 类中的 clone 方法克隆对象,但该对象的类无法实现 Cloneable 接口
IllegalAccessException
拒绝访问一个类
InstantiationException
试图使用 Class 类中的 newInstance 方法创建一个类的实例,而指定的类对象因为是一个接口或是一个抽象类而无法实例化
InterruptedException
一个线程被另一个线程中断
NoSuchFieldException
请求的变量不存在
NoSuchMethodException
请求的方法不存在
--Capture and process--
--Error methods--
try{
(code)
}catch(ErrorClass e){
(error handling)
}catch(ErrorClass2 e2){
(error handling2)
}finally{
(code, will always be executed, regardless of whether an exception occurs.)
}...
//note: 在 try/catch 后添加 finally 非强制要求
try{
(code)
}catch(ErrorClass | ErrorClass2 | ErrorClass3 e){
(error handling)
}
// note: ErrorClass | ErrorClass2 | ErrorClass3 等 不能有继承关系,否则会导致编译错误
// note2: e 是这三种异常的共同引用变量,因此在 catch 块内不能调用它们特有的方法。
// note3: 编译器会推断出这个异常变量的类型为这几个异常的最近公共父类(比如 Exception 或 IOException)
--◇Example--
try{
a = x / 0;
}catch(ArithmeticException e){
System.out.println("..." + e.getMessage());
}
public String getMessage()
返回关于发生的异常的详细信息, 在Throwable 类的构造函数中已初始化
public Throwable getCause()
返回一个 Throwable 对象代表异常原因
public String toString()
返回此 Throwable 的简短描述
public void printStackTrace()
将此 Throwable 及其回溯打印到标准错误流
public StackTraceElement [] getStackTrace()
返回一个包含堆栈层次的数组。下标为0的元素代表栈顶,最后一个元素代表方法调用堆栈的栈底
public Throwable fillInStackTrace()
用当前的调用栈层次填充Throwable 对象栈层次,添加到栈层次任何先前信息中