1. 异常类的继承结构
在整个Java的异常结构中,实际上有两个最常见的类,分别是Excepttion和Error,这两个类全都是Throwable的子类。
Exception:一般表示的是程序中出现的问题,可以直接使用try…catch处理。
Error:一般指的JVM的错误,程序中无法处理。
一般情况下,开发者习惯于将Excepttion和Error统称为异常,而算术异常、数字格式化异常等都属于Exception的子类。
异常处理步骤:
1. 一旦产生异常,则首先会产生一个异常类的实例化对象。
2. 在try语句中对此异常对象进行捕捉。
3. 产生的异常对象与catch语句中的各个异常类型进行匹配,如果匹配成功,则执行catch语句中的代码。
实现如下:
try{
//执行代码
//发生异常,产生异常类的实例化对象
}catch(ArithmeticException e){ //匹配异常类型
//执行异常处理代码
}finally{
//异常的统一出口
}
常见异常:
ArithmeticException(算术异常)
NumberFormatException(数字转换异常)
ArrayIndexOutOfBoundsException(数组越界异常)
Exception(其他异常)
2. throws与throw关键字
- throws关键字:
在定义一个方法时可以使用throws关键字声明,使用throws声明的方法表示不处理异常,而交给方法的调用处进行处理。具体如下所示:
class Math{
public int div(int i,int j) throws Exception{
//方法可以不处理异常
int temp=i/j;
return temp;
}
}
- throw关键字
与throws关键字不同的是,可以直接使用throw关键字人为地抛出一个异常,抛出时直接抛出异常类的实例化对象即可。
public class ThrowDemo{
public static void main(String args[]){
try{
throw new Exception("自己抛出异常!"); //抛出异常的实例化对象
}catch(Exception e){//捕捉异常
System.out.println(e);
}
}
}
3. Exception类与RuntimeException类
Exception在程序中必须使用try…catch进行处理
RuntimeException可以不使用try…catch进行处理,但是如果有异常产生,则异常将由JVM进行处理。
4. 断言
断言就是肯定某一个结果的返回值是正确的,如果最终此结果的返回值是错误的,则通过断言检测肯定会提示错误信息。
使用如下
assert boolean 表达式;
assert boolean 表达式:详细的信息;