java中的异常:打开不存在的文件,网络断开,数组下标越界,正在加载的类文件丢失等等
java中的异常定义的轻微的错误,人工处理;而Error定义的严重的错误条件,由java虚拟机处理
出现异常时会产生一个异常类Exception,并提交给java运行系统,这个过程叫抛出异常
java运行时系统收到异常对象时会寻找异常代码,这个过程就是捕获异常。如果找不到捕获异常的代码,那程序就会退出。
将可能发生异常的方法放入try语句,异常情况处理放入catch语句,
class Excep
{
void devsion(int a, int b) 这后面加“
throws Exception" 声明要抛出异常,此时必须写异常捕获函数
{
return a/b;
}
}
class Test
{
public static void main(String[] args)
{
Excep ex = new Excep();
try{
ex.devsion(5,0);
}
// catch(ArithmeticException e) //更加具体的异常,异常可以捕获一个或者多个,一般具体异常的写在前面
// {
// }
catch(Exception e) //异常类Exception, 写在后面
{
System.out.println("e.getMessage()"); //获取异常信息,系统方法
System.out.println("e.toString()"); //获取异常信息,系统方法
e.printStackTrace(); //获取异常发生的位置
//throw e; //再次抛出异常
System.out.println("除数不能为0");
System.out.println("finish.."); //不执行,产生异常了直接跳到catch
}
System.out.println("finish"); //异常处理完毕,继续执行
finally //无论有没有异常,finally都会执行,即使在try语句已经返回,finally依然执行
{ //但是当程序终止执行时,finally不执行。 例如System.exit()退出程序后,finally不执行
}
}
}
注意:RuntimeException为运行时异常,由于程序编写者明显的失误造成,系统会自动捕获,因此不需要显示的捕获
自定义异常类
class Exp extends Exception //自定义异常,继承Exception
{
Exp(String str)
{
super(str);
}
}
int dev(int a, int b) throws ArithmeticException,Exp //抛出多个异常
{
if (b<0)
throw new Exp("除数是0");
}
子类覆盖父类的方法,那么子类的该方法不能抛出新的异常,可以是父类抛出的异常,或者父类抛出异常的子类
阅读(13951) | 评论(0) | 转发(1) |