Java笔记 异常篇

Java笔记 异常篇

   在Java中,把异常信息封装成了一个类。当出现了问题时,就会创建异常类对象并抛出异常相关的信息(如异常出现的位置、原因等)。
   在API中,Exception 类及其子类是 Throwable 的一种形式,它用来表示java程序中可能会产生的异常,并要求对产生的异常进行合理的异常处理。

异常处理方式

throws

会抛出异常的代码必须要用throws声明它有可能这么做。

public int getArray(int[] arr) throws Exception {   
   if( arr == null){     
   throw new Exception("数组不存在");    
   } 
 } 
  1. 当方法遇见异常,将异常抛给方法调用方;
  2. 方法调用方如果没有异常处理程序,则将异常抛给JVM;
  3. JVM打印出异常相关信息:异常类的类名,异常出现的所在方法,异常所出现的代码位置等;
  4. 结束程序
public static void main(String[] args) throws Exception {
    int[] arr = null;
    int i = getArray(arr);
    System.out.println(i);
}
public static int getArray(int[] arr) throws Exception {
    //对方法参数进行合法性的判断,进行判断是不是null
    if( arr == null){
        //抛出异常的形式,告诉调用者
        //关键字 throw
        throw new Exception("数组不存在");
    }
}


try…catch

  1. tr检测异常,将异常抛给catch;
  2. catch捕获异常,处理异常;
  3. 程序继续
try{
//危险动作   
 }catch(Exception ex){ 
 //处理异常
 }

try{
//危险动作   
 }catch(Exception ex){ 
 //处理异常
 }finally{
 //此部分程序无论有无异常都必须执行,常用于释放内存
 }
   对于多catch情况,平级异常(互相无继承关系)无先后顺序要求,有继承关系的异常需要将子类放在前,父类放在后。
try{

  }catch(NullPointerException ex){
  
  }
  catch(Exception ex){
  
  }

运行异常

    运行异常是指RuntimeException及其子类。
    运行异常不需要用throws抛出异常,因为当出现运行异常,建议直接修改代码。

子类重写父类方法时的异常处理

  1.如果父类的方法抛出异常,子类重写该方法可以不抛出异常,也可以抛出异常。但是,如果子类抛出异常,其继承关系不能大于父类的异常,即子类抛出的异常类型只可以跟父类一样或者为其子类。
  2.如果父类的方法没有异常抛出,子类重写后也不能抛出异常。如果子类的重写方法中调用了抛出异常的方法,只能用try...catch处理。
class Fu{
    public void function(){

    }
}

class Zi extends Fu{
    public void function(){
        try {
            method();
        } catch (Exception e) {
            e.printStackTrace();//列出有用信息
        }
    }
    public void method()throws Exception{
    }
}

自定义异常

继承Exception或者RuntimeException。
public class XxxException extends Exception{
  public XxxException(String s){
  super(s);
 }
  public XxxException(){}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值