Java基础:异常处理

jopen 10年前

1 java异常继承体系

1.1 常用异常继承体系

Java基础:异常处理

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