异常处理
1.2 异常
如果由于出现错误而使得某些操作没有完成,程序应该:
1:返回到一种安全状态,并能够让用户执行一些其他的命令
2:允许用户保存所有的操作的结果,并以妥善的方法终止程序
异常从父类Throwable向下有两个分支
1.Error:错误是由Java产生的,这种情况程序员无法通过代码处理。
2.Exception: Exception以及它的子类,代表程序运行时发送的各种不期望发送的事件。可以被Java异常处理机制使用,是异常处理的核心
Exception又分为非检查型异常和检查型异常
常见的运行期异常下图:
异常 | 描述 |
---|---|
ArithmeticException | 当出现异常的运算条件时,抛出此异常。例如,一个整数“除以 零”时,抛出此类的一个实例 |
ArrayIndexoutOfBoundsException | 用非法索引访问数组时抛出的异常。如果索引为负或不小于数组大 小,则该索引为非法索引 |
ArrayStoreException | 试图将错误类型的对象存储到一个对象数组时抛出的异常 |
ClassCastException | 当试图将对象强制转换为不是实例的子类时,抛出该异常 |
NullPointerException | 当应用程序试图在需要对象的地方使用null时,抛出该异常 |
NumberFormatException | 当应用程序试图将字符串转换成一种数值类型,但该字符串不能转 换为适当格式时,抛出该异常 |
IndexOutOfBoundsException | 指示某排序索引(例如对数组、字符串或向量的排序)超出范围时 抛出 |
常见的编译期异常
异常 | 描述 |
---|---|
ClassNotFoundException | 应用程序试图加载类时,找不到相应的类,抛出该异常 |
CloneNotSupportedException | 当调用Objeet类中的clone方法吉降对龟,但该对象的类无法实现Cloneable接口时,抛出该异常 |
llegalAccessException | 拒绝访问一个类的时候,抛出该异常 |
InstantiationException | 当试图使用Class类中的newInstance方法创建一个类的实例,而指定的类对象因为是一个接口或是一个抽象类而无法实例化时,抛出该异常 |
InterruptedException | 一个线程被另—个线程中断,抛出该异常 |
NoSuchFieldException | 请求的变量不存在 |
NoSuchMethodException | 请求的方法不存在 |