异常的基本概念
异常是导致程序中断的一种指令流,在没有异常处理的语言中如果要回避异常,就必须使用判断语句,配合所想到的错误状况来捕捉程序里所有可能发生的错误。
异常处理格式:
try{
//有可能出现异常的语句
}catch(异常类 异常对象){
//编写异常的处理语句
}[catch(异常类 异常对象){
//编写异常的处理语句
}....]
[finally{
//一定会运行到的程序代码,不管程序是否异常
}
例子:
int i=10;
int j=0;
System.out.print("计算开始\n");
try{
int temp=i/j;
System.out.print("计算结果为:"+temp);
}catch(ArithmeticException e)
{
System.out.print("程序出现了异常"+e+"\n");
}
finally{
System.out.print("不管程序是否异常,都执行此代码\n");
}
System.out.print("计算结束");
//程序运行结果为:
计算开始
程序出现了异常java.lang.ArithmeticException: / by zero
不管程序是否异常,都执行此代码
计算结束
在JAVA的异常结构中,最常用的两个类是:Exception和Error,这两个类都是Throwable的子类
Exception:一般表示程序中出现的问题,可以直接try…catch处理
Error: 一般指的是JVM错误,程序中无法处理。
异常信息的处理格式:Exception类中的printStackTrace() 方式输出异常信息最安全:e.printStackTrace();
在JAVA捕获异常时,所有捕获范围小的异常必须放在捕获范围大的异常前面。
且所有异常都可以使用Exception接收
二,throws与throw关键字
使用throws声明的方法表示此方法不处理异常,而交给方法的调用处进行处理。
格式:
public 返回值类型 方法名称(参数列表...)throws 异常类{}
class Math{
public int div(int a,int b)throws Exception{
return a/b;
}
}
在主方法中:
Math m=new Math();
try{//因为在方法中有throws,所以不管有无异常,都必须进行处理
System.out.print("除法操作:"+m.div(10,2));
}catch(Exception e)
{
e.printStackTrace();
}
}
//程序运行结果为:除法操作:5
throw:可以直接使用throw关键字抛出一个异常,throw不会单独使用
try{
throw new Exception("自己抛出的异常!");
}catch(Exception e){
System.out.print(e);
}
//程序运行结果为:java.lang.Exception: 自己抛出的异常!
Exception 在程序中必须使用try…catch进行处理
RuntimeException 可以不适用try…catch处理,但如果有异常产生,则异常将由JVM处理,且其也是Exception的子类
断言就是肯定某一个结果的返回值是正确的
格式:assert boolean 表达式; assert boolean 表达式:详细的信息 断言虽然有检查运行结果的功能,但是并不提倡使用。