015_面向对象_异常,包和Object类

Posted lydbky

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了015_面向对象_异常,包和Object类相关的知识,希望对你有一定的参考价值。

1.异常(http://blog.csdn.net/hguisu/article/details/6155636)

  (1)异常的定义

    异常是指在运行期间发生的不正常情况,java中用类的形式对不正常情况进行了描述和封装,称为异常类。不同的问题用不同的类进行具体的描述。

问题很多,描述的类也很多,将其共性进行向上抽取,形成了异常体系。

  (2)异常的体系

        技术分享图片

    ①Error(程序不可处理的)
       是由jvm抛出的严重性问题,这种问题发生一般不针对性处理,直接修改程序。
    ②Exception(程序可以处理的)

  (3)Exception的分类

    ①编译时异常:Exception中除了子类RuntimeException的异常体系。

      这种问题一旦出现,希望在编译时就进行检测,让这种问题有对应的处理方式,都可以针对性的处理
    ②运行时异常:Exception中的RuntimeException体系。
      这些异常一般是由程序逻辑错误引起的,程序应该从逻辑角度尽可能避免这类异常的发生。

      运行时异常的特点是Java编译器不会检查它,当程序中可能出现这类异常,即使没有用try-catch语句捕获它,也没有用throws子句声明抛出它,也会编译通过。

  (4)throw和throws的区别

    ①throws使用在方法上,throw使用在函数内

    ②throws抛出的是异常类,可以抛出多个,用逗号隔开,throw抛出的是异常对象。

  (5)异常处理的机制

    ①抛出异常:当一个方法出现错误引发异常时,方法创建异常对象并交付运行时系统,异常对象中包含了异常类型和异常出现时的程序状态等异常信息。运行时系统负责寻找处置异常的代码并执行。

    ②捕获异常:在方法抛出异常之后,运行时系统将转为寻找合适的异常处理器。潜在的异常处理器是异常发生时依次存留在调用栈中的方法的集合。当异常处理器所能处理的异常类型与方法抛出的

            异常类型相符时,即为合适 的异常处理器。运行时系统从发生异常的方法开始,依次回查调用栈中的方法,直至找到含有合适异常处理器的方法并执行。当运行时系统遍历调用栈而未

            找到合适 的异常处理器,则运行时系统终止。同时,意味着Java程序的终止。

          具体格式是:

              try
              {
                //需要被检测异常的diamond
              }
              catch(异常类1 变量)//该变量用于接受发生的异常
              {
                //处理异常的代码
              }

              catch(异常类2 变量)//该变量用于接受发生的异常
              {
                //处理异常的代码
              }
              finally
              {
                //无论是否捕获或处理异常,一定会被执行的代码,当在try块或catch块中遇到return语句时,finally语句块将在方法返回之前被执行。
              }

             技术分享图片

  (6)异常处理的原则

    1.函数内容如果抛出需要检测的异常,那么函数上必须要声明。否则必须在函数内用try catch捕捉,否则编译失败

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

    3.什么时候catch,什么时候throws呢?
      功能内容可以解决,用catch
      解决不了,用throws告诉调用者,由调用者解决

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

      针对性处理。内部有几个需要检测的异常,就抛几个异常,抛出几个,就catch几个。

    
        

 






















以上是关于015_面向对象_异常,包和Object类的主要内容,如果未能解决你的问题,请参考以下文章

python------面向对象进阶

面向对象高级-day8

Python_Day8_面向对象编程进阶

Python核心编程总结(四面向对象与异常)

Python之路-python(面向对象进阶)

面向对象编程