异常

来源:互联网 发布:sql 左联 编辑:程序博客网 时间:2024/04/25 03:53

异常:是在运行时期发生的不正常情况

在java中用类的形式对不正常情况进行了描述和封装对象

描述不正常的情况的类,就称为异常类

以前正常流程代码和问题处理代码相结合,

现在将正常流程代码和问题处理代码分离,提高阅读性


其实异常就是java通过面向对象的思想将问题封装成了对象

用异常类对其进行描述,不同的问题用不同的类进行具体的描述,比如角标越界、空指针等等


问题很多,意味着描述的类也很多

将其共性进行向上抽取,形成了异常体系

最终异常就分成了两大类:

Throwable:无论是error,还是异常,都是问题,就应该抛出,让调用者知道并处理。该体系的特点就在于throwable及其所有子类都具有可抛性

           可抛性其实是通过两个关键字来体现的:throw和throws,凡是可以被这两个关键字所操作的类和对象都具有可抛性

                  1.一般不可处理的。Error

                                     特点:是由jvm抛出的严重性的问题

                                             这种问题发生一般不针对性处理,直接修改程序

                  2.可处理的。  Exception

                                   

该体系的特点:

             子类的后缀名都是用其父类名作为后缀,阅读性很强                                   


所以自定义异常时,要么继承exception,要么继承runtimeexception


throws和throw的区别:

1.throws使用在函数上

      throw使用在函数内

2. throws抛出的是异常类,可以抛出多个,用逗号隔开

      throw抛出的是异常对象


异常处理的捕捉形式:

     这是可以对异常进行针对性处理的方式

具体格式是:

try

{

        // 需要被检测异常的代码

}

catch(异常类  常量)    //  该变量用于接收发生的异常对象

{

            // 处理异常的代码  

} finally

{

          //  一定会被执行的代码

}



多catch情况下父类的catch放在最下面


异常处理的原则:

1.函数内容如果抛出需要检测的异常,那么函数上必须要声明

            否则必须在函数内用try  catch捕捉,否则编译失败

2.如果调用到了声明异常的函数,要么try  catch要么throws,否则编译失败

3.什么时候catch,什么时候throws呢?

          功能内容可以解决,用catch

          解决不了,用throws告诉调用者,由调用者解决

4.一个功能如果抛出了多个异常,那么调用时,必须有对应多个catch进行针对性的处理

       内部有几个需要检测的异常,就抛及格异常,抛出几个,就catch几个


try catch finally 代码块组合特点:

1.try catch finally

2.try catch(多个)当没有资源需要释放时,可以不用定义finally

3.try  finally 异常无法直接catch处理,但是资源需要关闭


异常的注意事项:

1.子类在覆盖父类方法时,父类的方法如果抛出了异常,那么子类的方法只能抛出父类异常或父类异常的子异常

2.如果父类抛出多个异常,那么子类只能抛出父类异常的子集

简单说:子类覆盖父类只能抛出父类的异常或者子类或者子集

注意:如果父类的方法没有抛出异常,那么子类覆盖时绝对不能抛,就只能try







0 0
原创粉丝点击