6.1异常的体系结构

      6.1.1 Java异常的体系结构

                1)定义:在Java语言中,将程序执行中发生的不正常的情况称为“异常”。注意:开发过程中的语法错误和逻辑错误不                        是异常。

                2)Java程序在执行过程中所发生的异常事件可分为两类:

                      a)Error:Java虚拟机无法解决的严重问题。如:JAM系统内部错误、资源耗尽等严重情况。一般不编写针对性的                               代码进行处理。

                      b)Exception:其它因编程错误或偶然的外在因素导致的一般性问题,可以使用针对性的代码进行处理。如空指针                               访问,试图读取不存在的文件,网络连接中断

                            >编译时异常:在编译期间会出现的异常(执行javac.exe命令时,出现异常)

                            >运行时异常:在运行期间出现的异常(执行java.exe命令时,出现异常)

第6章:异常处理

          6.1.2 常见的运行时异常

                   1)数组下标越界的异常:ArrayIndexOutOfBoundsException

                         int[] i = new int[3];

                         System.out.println(i[3]);

                  2)算数异常:ArithmeticException

                        int i = 10;

                        Syatem.out.println( i / 0);

                  3)类型转换异常:ClassCastException

                       Object obj = new Date();

                       String str = (String)obj;

                 4)空指针异常:NullPointerExcetion

                       Person p = new Person();

                       p = null;

                       System.out.println(p.toString());

        6.1.3 常见的编译时异常

                 //编译时异常,需要及时处理。

                 FileInputStream fis = new FileInputStream(new File(“hello.txt”));

                 int b;

                 while((b = fis.read() != -1)){

                            System.out.println((char)b);

                }

                fis.close();

 6.2如何处理Exception异常

       6.2.1 异常处理机制

       对于运行时异常来说,可以不显示的进行处理。对于编译时异常来说,必须要显示的进行处理。

       1)Java提供的是异常处理的抓抛模型。

              a)“抛”:当我们执行代码时,一旦出现异常,就会在异常的代码处生成一个对应的异常类型的对象,并将此对象抛出。                      (自动抛出/手动抛出(throw +异常类的对象))

                     >一旦抛出此异常类的对象,那么程序就终止执行。

                     >此异常类的对象抛给方法的调用者。

                     >异常类,既可以是现成的异常类,也可以是自己创建的异常类

                       自定义一个异常类①自定义的异常类继承现有的异常类②提供一个***,提供几个重载的构造器

第6章:异常处理

                       >抛出异常类的重写规则:子类重写的父类的方法,其抛出的异常类型只能是被重写的方法的异常类的子类或是异                            常类型一样

                b)“抓”:抓住上一步抛出来的异常类的对象。如何抓?即为异常处理的方式。有两种方式(①try-catch-finally②throws +                       异常的类型)

          处理方式一:

          try{

                 //可能出现异常的代码

          }catch(Exception e1){

                 //处理的方式1

          }catch(Exception e2){

                 //处理的方式2

          }finally{

                 //一定要执行的代码

          }

                       注意:1.try内生命的变量,类似于局部变量,出了try{}语句,就不能被调用

                                   2.finally是可选的。

                                   3.catch语句内部是对异常对象的处理。

                                      >getMessage();   printStackTrace();

                                   4.可以有多个catch语句,try中炮制出的异常类对象从上往下去匹配catch中的异常类的类型,一旦满足就执                                         行Catchzhong的代码。执行完,就跳出其后的多条Catch语句。

                                   5.如果异常处理了,那么其后的代码继续执行

                                   6.若catch中多个异常类型是“并列”关系,谁上谁下都可以。若catch中多个异常类型“包含”关系,需要将子类                                         放在父类的上面,进行处理。否则报错!

                                   7.finally中存放的是一定会被执行的代码。不管try中,catch中是否仍有异常未被处理,以及是否有return语句

                                   8.try-catch是可以相互嵌套的。

                           第6章:异常处理

                           第6章:异常处理

                          第6章:异常处理

              c)处理方式二:声明抛出异常

                     public void readFile(String file) throes FileNotFoundException{

                     … …

                     //读文件的操作可能产生FileNotFoundException类型的异常

                     FileInputStream fis = new FileInputStream(file);

                     … …

                     }

                     >如果一个方法中的语句执行时可能生成某种异常,但是并不知道该确定如何

                       处理该异常,则此方法应显示的声明抛出异常,表明该方法将不对这些异常进行处理,而由该方法调用者负责处理

                     >咋方法声明中用throw语句可以声明抛出异常的列表,throw后面的异常类型可以是方法中产生的异常类型,也可以                          是它的父类

                     >异常对象可以逐层向上抛,直至main中。当然在向上抛的过程中,可以再通过try-catch-finally进行处理。

       2)Java程序的执行过程中如出现异常,会生成一个异常类对象,该异常对象将被提交给Java运行时系统,这个过程称为抛                出(throw)异常。

       3)异常对象的生成

       第6章:异常处理

      第6章:异常处理

相关文章: