Java基础:异常处理
1 java异常继承体系
1.1 常用异常继承体系
Java把所有的非正常情况分为两种情况:异常(Exception)和错误(Error),它们都继承Throwable父类。
Error错误, 一般是指与虚拟机相关的问题,如系统崩溃、虚拟机错误、动态链接失败等,这种错误无法恢复或不可能捕获,将导致应用程序中断。通常应用程序无法处理这些错 误,因此应用程序不应该试图使用catch块来捕获Error对象。在定义方法时,也无须在其throws子句中声明该方法可能抛出Error及其任何子 类。
Java异常(Exception)被分为两大类:Checked异常和Runtime异常。所有的RuntimeException类及其子类的实例都被称为Runtime异常;不是RuntimeException类及其子类的异常实例则被称为Checked异常。
Java认为Checked异常都是可以在编译阶段被处理的异常,所以它强制程序处理所有的Checked异常,如果程序没有处理Checked异常,则程序在编译时会发生错误,无法通过编译;而Runtime异常无须处理。
Checked异常可以提醒程序员需要处理所有可能发生的异常,但是Checked异常也给编程带来了一些烦琐之处,只有Java提供了Checked异常,其他语言都没有提供,所以Checked异常也是java领域一个备受争论的话题。
1.2 常用异常
-
ArithmeticException:当出现异常的运算条件时,抛出此异常。例如,一个整数“除以零”时,抛出此类的一个实例。
-
IndexOutOfBoundsException:用非法索引访问排序集合(例如,数组、字符串等)时抛出的异常,如果索引为负或大于等于排序集合大小,则该索引为非法索引。
-
NullPointerException:空指针异常。当应用程序试图在需要对象的地方使用了null 时,抛出该异常。
-
ClassNotFoundException:无法找到指定的类异常。
-
CloneNotSupportedException:相关类没有继承Cloneable接口。
-
IOException:发生 I/O 错误时引发的异常。
-
FileNotFoundException:当java程序试图打开指定路径名表示的文件失败时,抛出此异常。
-
EOFException:当输入过程中意外到达文件或流的末尾时,抛出此异常。此异常主要被数据输入流用来表明到达流的末尾。
-
UnknownHostException:给定IP的主机无法连接。
1.3 异常对象常用方法
2 异常关键字
2.1 try catch finally
2.2 throw throws
2.3 return与finally
3 JDK 7异常增强
3.1 自动关闭资源
3.2 多异常捕获
4 异常跟踪栈
5 自定义异常
6 异常最佳实践
来自:http://my.oschina.net/sunchp/blog/375279