异常体系
异常就是java程序中出现错误或者异常。
程序出现异常时就会停止运行,异常后边程序不会再运行,所以处理异常是为了保证程序的正常运行。所有的异常都在Throwable中,而且也只有在Throwable体系中才会被虚拟机识别。
Throwable包含两类也是前面提到的两个,错误:Error,所有的错误后缀都是Error,出现错误意味着是虚拟机出现了错误。另一个就是异常:Exception,同样的所有的异常后缀也都是Exception,异常分为编译异常和运行异常。
出现错误以后在控制台会出现详情,我们要根据出现错误的类型来排查可能出现错误的部分,往往第一行就是程序出现错误的地方。
处理异常有两种方式:
1.捕获 捕获问题并且自己处理。
//语法:
try{//可能出现问题的代码}catch(异常类型 变量){处理方案}finally{最终必然会执行的代码}
//其中的任意一个都不能单独存在,可用的组合形式有
try{}catch(){}
try{}finally{}
try{}catch(){}finally{}
//当可能出现多个异常时,可以使用多个catch进行处理
例如:
try {
可能出现异常部分的代码
}
}catch(NullPointerException e) {
//出现问题时的处理方案
e.printStackTrace();
System.out.println();
}catch(ArrayIndexOutOfBoundsException e) {
System.out.println();
}catch(Exception e) {
System.out.println();
}finally{
......
}
注意finally部分是一定会运行,也就是说即使前面出现异常,finally部分也会继续运行。
2.抛出,不恰当的记忆方式就像在推卸责任,谁用谁处理这个异常,直至抛出到虚拟机。`
1、使用throws声明异常
2、多个异常时使用逗号隔开
public static void throwMethod(int[] arr) throws NullPointerException,ArrayIndexOutOfBoundsException{ int length = arr.length; System.out.println(arr[length]); }
在抛出中需要注意的有两个关键词:throw 和 throws`
throws 是声明异常,可以声明多个异常中间用“,”(逗号)隔开,throw是用来抛出异常对象的,
位置上的记忆区别在于:throw 用在方法中,throws是用在方法上面的。
说了两种处理方案那么两者在使用时候该怎么选择呢?
很简单,在自己责任范围内的就需要去处理异常所以就要用捕获,在调用过程中出现异常的就可以使用抛出。