关键字
Java中的异常处理机制由关键字:try catch finally throw 和 throws组成。
异常类型
Java可抛出的结构分为三种类型:被检查的异常CheckedException,运行时异常RuntimeException和错误Error
运行时异常(RuntimeException)
定义:RuntimeException及其子类都被称为运行时异常
特点:Java编译器不会检查他,也就是说,当程序中可能出现这类异常时,没有通过throws显式的声明抛出它,也没有用try-catch捕获它,还是会编译通过。例如当除数为0时产生的ArithmeticException,数组越界产生的IndexOutOfBoundsException,某一个引用为空的NullPointerException等,都属于运行时异常。
常见的运行时异常有:
1.NullPointerException 空指针引用异常
2.ClassCastException 类型强制转换异常
3.IllegalArgumentException 传递参数非法异常
4.ArithmeticException 算数运算异常
5.ArrayStoreException 向数组中存放与声明类型不匹配的对象异常
6.IndexOutOfBoundsException 数组下标越界异常
7.NegativeArraySizeException 创建一个大小为负数的数组错误异常
8.NumberFormatException 数字格式异常
9.SecurityException 安全异常
10.UnsupportedOperationException 不支持的操作异常
被检查异常
定义:Exception类本身,以及Exception的子类中除了运行时异常之外的其他子类都属于被检查异常
特点:Java编译器会检查它,此类异常要么通过throws进行声明抛出,要么通过try-catch进行捕获处理,而不能通过编译,例如IO异常中IOException就可能在读写文件时发生,但发生的本身是不预期的,所以Checked异常需要程序显式的处理,虽然大多数情况下这个异常不会真的发生。
常见的被检查异常
IOException IO异常
FileNotFoundException 文件不存在
SQLException SQL异常
错误
定义:Error及其子类
特点:和运行时异常一样,编译器不会对其进行检查,当资源不足,约束失败,或其他条件使程序无法继续运行时,就会产生错误,程序本身无法修复这些错误。例如,VirtuaMachineError就属于错误,出现这种情况就会导致程序终止,OutOfMemoryError ThreadDeath