异常

 

1、异常分两大类,一类是继承自 RuntimeException 的异常,另一类是继承自 Exception 的异常
Exception 是必须捕捉的异常,因为这类异常代表程序不可预料的错误,比如程序正在与另一台计算机通过网络进行信息交换时,网线被人剪断,这类异常必须处理
RuntimeException 是可以完全避免的错误,比如空指针异常,只要我们在使用一个引用前先判断一下变量是否为空就可以避免出现,这类异常不必捕捉

2、异常处理的方法一般有两种,或者自己捕捉,然后自己处理,或者抛给你的方法的调用者

3、在异常捕捉语句块中,当语句块中间发生了异常时,被捕捉的语句块中剩下的语句将不会被执行,因此在 try..catch 中,最好把释放资源的语句(比如关闭文件操作)写到 finally 块中,比如

InputStream is1= null;
InputStream is2
= null;
try{
    is1
= new FileInputStream("C://a.txt");
    is2
= new FileInputStream("C://b.txt");
   
   
// .....

   
// 如果文件a.txt成功打开,而文件b.txt打开失败,则 try 内部的 is1.close(); 和 is2.close(); 将不会被执行
    is1.close();
    is2.close();
}
catch(IOException ioEx){
   
// 异常处理代码
}finally{
   
// 关闭 is1 和 is2 的操作应该放在这里
    if(is1!= null){
       
try{
            is1.close();
        }
catch(Exception ex){}
    }
   
if(is2!= null){
       
try{
            is2.close();
        }
catch(Exception ex){}
    }
}

4、如果一个方法中声明了抛出异常 ExceptionA,而在子类中重写了这个方法,那么子类重写的这个方法能够声明抛出的异常是有限制的:或者声明抛出 ExceptionA、或者声明抛出 ExceptionA 的子类,或者不声明抛出异常。
简单点说,如果子类重写父类的方法时,子类重写的方法声明抛出的异常应该比其父类方法声明抛出的异常更精确。 
  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值