欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

JAVA 异常,

来源: javaer 分享于  点击 44502 次 点评:10

JAVA 异常,


捕捉异常

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

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

捉到了做什么?

拿到异常对象之后,比如拿到了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、声明自己会抛出无法处理的异常

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

相关文章

    暂无相关文章
相关栏目:

用户点评