黑马程序员——Java基础--- 异常

来源:互联网 发布:影视剪辑软件 edius7 编辑:程序博客网 时间:2024/05/26 05:52


                                                                     ------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------


首先感谢黑马、感谢素不相识的 毕老师

第三讲    异常

       面向对象,以及封装等特点,同样在java的异常机制里面,异常很好地处理和解决了程序可能出现的问题。

 

一、异常概述

        1、异常定义:错误或者不正常的显现象的产生都回在程序在行时发生这就是异常。

        2、异常产生:将程序问题也当成一个类对象,用这种方式来处里程序运行中出现的错误。

        3、可能存在的异常类型

                3.1、非法的或自定义有问题的参数的错误地输入导致的异常

                3.2、不仅仅是软件还包括硬件也会出现问题,也是异常类

                3.3、在软件运行时设计的要求超出了计算机物理承受,如存储容量不足等           3.4、编写的程序不合法,如参数类型输入不正确等等

 

二、体系

        最主要的是两个方面:

               a是严重的problem;

              b非严重的problem

         a问题也就是很难解决的问题,Error因此这类错误不编写解决问题的方法,更多的是直接停止程序,将问题抛出来

        b类问题的处理,Exception是解决这类问题类。实现了不同的问题的处理和决绝。

         Error、Exception是有相同之处的。

从而也就产生了异常体系:

        Throwable

               //Error  (一般是非常大的问题很难处理的问题:如输入非法参数错误等)

                //Exception (这类一般是运行时出现的problem

                          //R       runtimeException(只抛不声明)

        Exception以及Error的名称都是有规定的:即子后缀为父类名称。还有就是异常皆可抛。

 

 

三、两种异常:

        1、异常编译时出现的

              该异常在编译时,如果没有处理(没有抛也没有try),编译失败。该异常被标识,代表着可以被处理。

         2、异常运行时出现的(编译可通过)

               编译器不需要检测和处理。这就是不解决的异常,程序终止掉,例如RuntimeException体系类。

 

四、异常的处理

1、 这里特殊的语句。

        try

        {

                 (代码)

        }

        catch(异常类  变量)

        {

                 (处理代码)

        }

        finally

        {

                 必运行代码;

        }

三种组合方式:

        1、try

             {

             }

             catch ()

             {

             }

        2、try

             {

             }

             finally

             {

             }  

        3、try

             {

             }

             catch ()

             {

             }

             finally

             {

             } 

特别注意:

        a)资源关闭代码通常定义在finally中,因此资源也完成了释放任务。

        b)当存在必须要执行的代码时,try{}finally{}是最好的的方式,即finally代码一定执行。

        c)需要记住的当到System.exit(0);fianlly就会终止。

2、throwsthrow区别

       

        函数上的是throws,使用逗号想分离的抛出异常类。

        函数内throw异常抛出,当出现为处理的异常。这时必须要声明出来(函数上),避免编译出错。

      其中  RuntimeException是一个例外。函数上不必声明,函数内也可以抛出RuntimeExcpetion异常,。

3、抛出信息的解决

        异常对象在函数内抛出时,这类问题出现时一定要有对应处理方法。一种是try catch,另外就是抛。

        一般情况下,函数内出现异常,函数上需要声明。在功能上通过throws的关键字声明了该功能有可能会出现异常类型。

特殊之处:

         异常一般方法:

        String getMessage();//异常的信息。

        toString();//异常类名以及异常信息。

        printStackTrace();//异常类名加异常信息加异常位置。.

                         

 

五、自定义异常

        当由于项目的特殊的要求,或者根究客户的要求会出现一些特定的异常。因此可以将此类特殊异常封装起来。继承Exception以及RuntimeException。

        a,使其具备可抛性。

        b,具备异常同性。

       

        例:

 

1. class fushuException extends Exception  

2. {  

3.     private String message;  

4.     ZiDingYiException(String message)  

5.     {  

6.         super(message); 

7.      }  

8. }  

class ZiDingYiException extends Exception{ private String msg; ZiDingYiException(String msg) { super(msg);//将会返回输入的信息     }}

自定义异常当需要继承RuntimeException异常时,说明该异常出现时,程序不再运行。            

 

try{         throw new AException();}catch (AException e){         // 对AException处理。         throw new BException();}

 

六、异常的注意事项

        1、问题在内部被解决就不需要声明。

        2、catch是用于处理异常。如果没有catch就代表异常没有被处理,如果该异常是检测时异常。那么必须声明。

        c、继承关系中覆盖:

              1,子类的异常应该是父类异常类型的子类。

              2,当子类覆盖异常放生时,不可抛只可以try的情况:父类无异常抛出异常,


0 0