您的位置:首页 > 职场人生

黑马程序员_Java异常机制

2013-12-15 16:33 169 查看
 ------- 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: