Java 异常知识点

一、异常的继承结构

      Java异常的基类为java.lang.Throwable,java.lang.Error和java.lang.Exception继承Throwable,RuntimeException和其它的Exception等继承Exception,具体的RuntimeException继承RuntimeException。
      Error和RuntimeException及其子类成为未检查异常(unchecked),其它异常成为已检查异常(checked)。

      Error体系:Error类体系描述了Java运行系统中的内部错误以及资源耗尽的情形。应用程序不应该抛出这种类型的对象(一般是由虚拟机抛出)。如果出现这种错误,除了尽力使程序安全退出外,在其他方面是无能为力的。所以,在进行程序设计时,应该更关注Exception体系。
      Exception体系:Exception体系包括RuntimeException 和其他非RuntimeException

      RuntimeException:RuntimeException体系包括错误的类型转换、数组越界访问和试图访问空指针等等。

      处理RuntimeException的原则是:如果出现 RuntimeException,那么一定是程序员的错误。例如,可以通过检查数组下标和数组边界来避免数组越界访问异常。
     其他(IOException等等)checked异常一般是外部错误,例如试图从文件尾后读取数据等,这并不是程序本身的错误,而是在应用环境中出现的外部错误。

 

二、checked exception和runntime exception

 

 * Runtime exceptions:

   在定义方法时不需要声明会抛出runtime exception;

   在调用这个方法时不需要捕获这个runtime exception;

   runtime exception继承自java.lang.RuntimeException或java.lang.Error。

    例如:

public void method1(){
        if(true){
             throw new RuntimeException();
        }
}

public void method2(){
        method1();
}

     【注意】:method1方法会抛出RntimeEeption,但是在定义时不需要声明,在调用时也不需要用try...catch..来捕获该异常。

 

  * Checked exceptions:

   定义方法时必须声明所有可能会抛出的checked exception;

   在调用这个方法时,必须捕获它的checked exception,不然就得把它的exception传递下去;

        checked exception都是继承自java.lang.Exception。

    例如:

public void method1() throws IOException{
        if(true){
             throw new IOException();
        }
}

public void method2() throws IOException{
        method1();
}

public void method3(){
        try{
            method1();
        }catch(Exception e){
            e.printStackTrace();
        }
}

 

 三、override时应遵循的规则:

 

    规则:“当override一个方法时,只能够申明和抛出不比它的父类版本中申明的异常多的异常”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值