黑马程序员——异常

一、概述

        1、异常:就是程序在运行时出现不正常情况。

        2、异常由来:问题也是现实生活中一个具体的事物,也可以通过java的类的形式进行描述。并封装成对象。其实就是java对不正常情况进行描述

    后的对象体现。

        3、程序可能出现的错误或问题

                a、用户输入错误导致的异常:如用户不正常使用程序,输入一些非法参数

                b、设备硬件等发生的错误:如硬盘损坏等

                c、物理限制:如存储空间不足等

                d、代码错误:在程序编写的方法可能不正确,返回错误参数等。

二、异常体系

  异常体系的特点:

          1、异常体系中的所有类以及建立的对象都具备可抛性。

            2、也就是说可以被throw和throws关键字所操作。

          3、只有异常体系具备这个特点。

三、异常的处理

   1、try

        {

                 需要被检测的代码。

        }

        catch(异常类  变量)

        {

                 处理异常的代码;(处理方式)

        }

        finally

        {

                 一定会执行的语句;

        }

  2、throw和throws的用法

        throw定义在函数内,用于抛出异常对象。

        throws定义在函数上,用于抛出异常类,可以抛出多个用逗号隔开。

        当函数内容有throw抛出异常对象,并未进行try处理。必须要在函数上声明,否则编译失败。

        注意:RuntimeException除外。也就说,函数内如果抛出的RuntimeExcpetion异常,函数上可以不用声明。

四、异常的好处与原则  

  好处:

        1、将问题进行封装。

        2、将正常流程代码和问题处理代码相分离,方便于阅读。

  原则:

        1、处理方式有两种:try或者 throws。

        2、调用到抛出异常的功能时,抛出几个,就处理几个。一个try对应多个catch。

        3、多个catch时,父类的catch放到最下面。否则编译会报错,因为其余的catch语句执行不到。

        4、catch内,需要定义针对性的处理方式。不要简单的定义printStackTrace,输出语句。也不要不写。当捕获到的异常,本功能处理不了时,可以继续在catch中抛出。

五、异常的注意事项  

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

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

        3、在子父类覆盖时:

              a,子类抛出的异常必须是父类的异常的子类或者子集。

              b,如果父类或者接口没有异常抛出时,子类覆盖出现异常,只能try不能抛。

posted @ 2015-12-03 19:42  lb1111  阅读(126)  评论(0编辑  收藏  举报