1、第第8章章 异常的基本概念异常的基本概念 异常的处理异常的处理 异常类的层次结构异常类的层次结构 创建自己的异常创建自己的异常 运行时发生的错误称为异常。处理这些异运行时发生的错误称为异常。处理这些异常就称为异常处理。常就称为异常处理。发生异常后此前分配的所有资源都将保留发生异常后此前分配的所有资源都将保留在相同的状态,这将导致资源漏洞。在相同的状态,这将导致资源漏洞。Public class ExceptionDemo1Public class ExceptionDemo1 public static void main(String args)public static void main
2、(String args)int a=0;int a=0;System.out.println(8/a);System.out.println(8/a);异常处理机制执行过程:异常处理机制执行过程:出现异常事件时,出现异常事件时,JavaJava系统自动产生一个系统自动产生一个异异常对象常对象,然后将这个对象传递给,然后将这个对象传递给JavaJava运行时系统,运行时系统,这个例外产生和提交的过程称为这个例外产生和提交的过程称为抛弃例外抛弃例外(throwthrow);当当JavaJava运行时系统得到例外对象以后,运行时系统得到例外对象以后,它将会寻找处理这一例外的代码,找到能处理这它将会
3、寻找处理这一例外的代码,找到能处理这一例外的方法以后,运行时系统把当前例外对象一例外的方法以后,运行时系统把当前例外对象交给这个方法进行处理,这一过程称为交给这个方法进行处理,这一过程称为捕获捕获(catchcatch)。7.2.1 7.2.1 异常类的层次和主要子类异常类的层次和主要子类 Java Java异常指的是一个继承异常指的是一个继承ThrowableThrowable类的实类的实例,它有两个子类:例,它有两个子类:ExceptionException和和ErrorError。它它们均被放在们均被放在java.langjava.lang包中。包中。7.2.2 7.2.2 异常类的方法
4、和属性异常类的方法和属性 祥见祥见p130p130。(1)由系统自动处理。)由系统自动处理。(2)使用)使用trycatchfinally语句。语句。(3)使用)使用throw语句直接抛出异常或使用语句直接抛出异常或使用throws语句间接抛出异常。语句间接抛出异常。语法结构:语法结构:try可能产生异常的代码段;可能产生异常的代码段;catch(异常类名异常类名1 对象名对象名1)处理语句组处理语句组1;catch(异常类名异常类名2 对象名对象名2)处理语句组处理语句组2;finally 最终处理语句;最终处理语句;(1)throw语句语句 用来明确地抛出一个异常,用来明确地抛出一个异常,
5、throw 异常异常;然后在包含它的所有然后在包含它的所有try块中从内向外寻找与其匹块中从内向外寻找与其匹配的配的catch语句块。语句块。(2)throws语句语句 如果一个方法可能导致异常但不处理它,此时可在如果一个方法可能导致异常但不处理它,此时可在方法声明中包含方法声明中包含 throws 子句,发生了异常,由调子句,发生了异常,由调用者处理。用者处理。throws列举方法可能引发的所有异常。列举方法可能引发的所有异常。这对于除这对于除Error或或RuntimeException及它们子类以外类及它们子类以外类型的所有异常是必要的。型的所有异常是必要的。()throwsthrows
6、1,2 if(if(异常条件异常条件1 1成立成立)throws new throws new 异常类异常类1 1();();if(if(异常条件异常条件2 2成立成立)throws new throws new 异常类异常类2 2();();内置异常不可能始终足以捕获所有错误,内置异常不可能始终足以捕获所有错误,因此需要用户自定义的异常类因此需要用户自定义的异常类 用户自定义的异常类应为用户自定义的异常类应为 Exception 类类(或者(或者Exception 类的子类)的子类类的子类)的子类 创建的任何用户自定义的异常类都可以创建的任何用户自定义的异常类都可以获得获得 Throwable类定义的方法类定义的方法class ArraySizeException extends NegativeArraySizeException ArraySizeException()super(“您传递的是非法的数组大小您传递的是非法的数组大小”);该类是该类是Exception的子类的子类1.掌握异常类的基本概念。掌握异常类的基本概念。2.掌握异常处理机制的处理过程。掌握异常处理机制的处理过程。3.掌握异常处理的方法。掌握异常处理的方法。