JAVA 异常

捕捉异常

try{
    //可能产生异常的代码
}catch(Type1 id1){
    //处理Type1异常的代码
}catch(Type2 id2){
    //处理Type2异常的代码
}catch(Type3 id3){
//处理Type3异常的代码
}

异常一旦发生,程序不一定要终止
抛出的子类异常会被父类的catch捕捉到
注意:图中所处二字指的是抛出异常所在的最近的大括号之间的区域。
java处理异常的过程

捉到了做什么?

拿到异常对象之后,比如拿到了ArrayIndexOutOfBoundsException e
那么可以有:

System.out.println(e.getMessage());//e.getMessage()得到的是发生异常的时候放在e里的值
System.out.println(e);//打印出的是异常的名字和当时e里的值
e.printStackTrace();//打印出异常发生的位置和依照上图走的路线并且给出代码第几行
  • 拿到异常对象之后
  • String getMessage();
  • String toString();
  • void printStackTrace();
  • 但是肯定回不去了,而具体的处理逻辑则取决于你的业务逻辑需要

再度抛出

调用这个代码即可:throw e;
可再次把这个异常抛出

其实在没有异常的时候也可以通过throw来抛出一个异常。
例如:

class OpenException extends Throwable{

}//代表目前可能会发生的异常
class CloseException extends Throwable{

}//代表现在不可能发生的异常,但是将来程序升级可能会抛出的异常
public static void readFile() throws OpenException, CloseException{//在这个位置把两个异常都写上
    if(true)
        throw new OpenException();//可以仅抛出一个异常
}
public static void main(String[] args){
    try{
        readFile();
    }catch(OpenException e){//需要为现在的异常提供解决代码
    }catch(CloseException e){//为了提前做好升级的准备
    }
}

什么能仍?

  • 任何继承了Throwable类的对象
  • Exception类继承了Throwable
  • throw new Exception(); //这个是Exception类的一个构造函数
  • throw new Exception(“HELP”); //这个是Exception类的另一个构造函数
  • //通常我们选择继承Exception类并且使用它的带参数的这个构造函数

万能的异常捕捉器

所有的系统运行异常都继承了Exception类,所以用catch(Exception e)即可捕捉到所有异常。

异常遇到继承

异常声明:

如果你调用一个声明会抛出异常的函数,那么你必须:
A、把函数的调用放在try块中,并且设置catch来捕捉所有可能抛出的异常
或:
B、声明自己会抛出无法处理的异常

异常声明遇到继承关系
当覆盖一个函数的时候,子类不能声明抛出比父类的版本更多的异常
在子类的构造函数中,必须声明父类可能抛出的全部异常

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值