黑马程序员_Java异常机制

来源:互联网 发布:数据科学家 认证 编辑:程序博客网 时间:2024/05/17 05:13

 ------- android培训java培训、java学习型技术博客、期待与您交流! --------

1.异常  

    指在运行时期发生的不正常情况。在Java中用类的形式对不正常情况进行描述和封装对象,描述不正常的情况的类,就称为异常类。

    Java中异常分为运行是异常和编译时异常。

运行时异常是由于数据的错误和程序本身缺陷导致的,是不可修饰的,所以当出现异常时,程序员要找出引发该异常的问题,并予以解决。

    编译时异常通常是程序中调用了某些声明来了异常的方法,当调用这些被声明了异常的方法时,要对这些异常进行预处理。

    throws和throw的区别  throws使用在函数上;

                            throw使用在函数内;

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

                            throw抛出的是异常对象

class FushuIndexExceptionextends Exception{

    FuShuIndexException()

    {     }

   FuShuIndexException(String msg)

  {

      super(msg);

      }

   }

 classDemo

{

    public int method(int[] arr,int index)

   {

        if(arr==null)

        throw new NullPointerException("数组的引用不能为空!");

        if(index>=arr.length)

{

   throw newArrayIndexOutOfBoundsException("数组的角标越界啦:"+index);

 }

      if(index<0)

{

   throw new FuShuIndexException("角标变成负数啦!!");

   }

    return arr[index];

}

}

   class ExceptionDemo3

{

  public static void main(String[] args) {

  int[] arr = new int[3];

  Demo d = new Demo();

  int num = d.method(null,-30);

      System.out.println("num="+num);

      System.out.println("over");

  }

}

2.自定义异常

  在编写程序过程中,有些异常是Java中没有进行描述的,这时我们就要根据java描述异常的规则自定义异常类。自定义异常类时这个类要继承Exception类,并提供相应的构造函数。

  至于自定义异常为什么要继承Exception,是因为Exception继承自Throwable,异常具有可抛性。这是Throwable体系的独有特性,如果自定义异常类时不继承Exception,那么自定义的异常不会具有异常固有的特征。

3.异常的捕捉处理

 具体格式:

 try{

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

}

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

{

    //处理异常的代码

  }    

finally

   {

      //一定会被执行的代码

  }

4.异常处理原则:

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

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

  (3)能解决的用catch,解决不了的,用throws告诉调用者,由调用者解决。

  (4)一个功能如果抛出多个异常,那么调用时,必须有对应多个catch进行针对性的处理;内部有几个需要检测的异常,就抛出几个。

5.异常注意事项:

   (1)子类在覆盖父类方法时,父类方法如果抛出异常,那么子类的方法只能抛出父类的异常或者该异常的子类。

   (2)如果父类抛出多个异常,那么子类只能抛出父类异常的子集。如果父类的方法没有抛出异常,那么子类覆盖时绝对不能抛,只能try.

 

------- android培训java培训、java学习型技术博客、期待与您交流! ----------

    详情请查看:http://www.itheima.com

0 0
原创粉丝点击