您的位置:首页 > 编程语言 > Java开发

JAVA 异常

2016-07-22 22:52 281 查看

捕捉异常

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、声明自己会抛出无法处理的异常


异常声明遇到继承关系

当覆盖一个函数的时候,子类不能声明抛出比父类的版本更多的异常

在子类的构造函数中,必须声明父类可能抛出的全部异常
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: