1.异常是程序中出现的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的,比如:你的代码少了一个分号,运行出来的结果提示的错误java.lang.Err; 如果是system.out.println(11/0),运行出来的提示错误java.lang.ArithmeticException的异常
2.异常发生的原因很多,通常包括几类
- 用户输入非法数据
- 要打开的文件不存在
- 网络通信是连接中断
- JVM内存溢出
3.Exception类的层次
- 所有的异常类都是从java.lang.Exception 类继承的子类
- Exception类是Throwable类的子类,除了Exception类外,Throwable还有一个子类Error
- java程序通常不捕获错误,错误一般发生在严重故障时,他们在java程序处理的范畴外
4.java内置异常类(非检查性异常)
异常 | 描述 |
---|---|
ArithmeticException | 当出现异常的运算条件时抛出的异常,例如:一个整数除0是 |
ArrayIndexOutOfBoundsException | 用非法的索引访问数组是抛出的异常,例如:索引为负或者大于等于数组大小,则该索引为非法索引 |
ArrayStoreException | 试图将错误类型的对象存储到一个对象数组是抛出的异常 |
ClassCastException | 试图将对象强制转换为不是实例的子类时,抛出的异常 |
IllegalArgumentException | 向方法传递了一个不合法或者不正确的参数 |
IllegalMonitorStateException | 某一线程已经试图等待对象的监视器,或是试图通知其他在等待对象的监视器而本身没有指定监视器的线程 |
IllegalStateException | 在非法或者不适当的时间调用方法是产生的信号,即java环境或java应用程序没有处于请求操作所要求的适当状态下 |
IllegalThreadStateException | 线程没有处于请求操作所要求的适当状态时抛出的异常 |
IndexOutOfBoundsException | 某排序索引超出范围抛出,例如:数组,字符串,向量的排序 |
NegativeArraySizeException | 应用程序试图创建大小为负数的数组,抛出异常 |
NullPointerException | 应用程序试图在需要对象的地方使用null时,抛出异常 |
NumberFormatException | 应用程序试图将字符串转换成一种数值类型,但该字符串不能转换适当格式时,抛出异常 |
SecurityException | 安全管理器抛出的异常,指示存在安全侵犯 |
StringIndexOutOfBoundsException | 此异常有String方法抛出,指示或者为负,或者超出字符串的大小 |
UnsupportedException | 当不支持请求操作时,抛出该异常 |
5.java内置异常类(检查性异常)
异常 | 描述 |
---|---|
ClassNotFoundException | 应用程序试图加载类时,找不到相应的类,抛出异常 |
CloneNotSupportedException | 当调用Object类中的clone方法克隆对象,但该对象的类无法实现Cloneable接口时,抛出异常 |
IllegalAccessException | 拒绝访问一个类的时候,抛出异常 |
InterruptedException | 一个线程被另一个线程中断,抛出该异常 |
NoSuchFieldException | 请求变量不存在 |
NoSuchMethodException | 请求的方法不存在 |
InstantiationException | 当试图使用Class类的newInstance方法创建一个类的实例,而指定的类对象因为是一个接口或者是一个抽象类而无法实例化时,抛出异常 |