概念:在程序运行中发生的不正常情况,简称为“异常”。(程序中的语法错误和逻辑错误不是异常)
Throwable的子类:1、Error:java虚拟机无法解决的问题。
2、Exception:其它因编程错误或偶然的外在因素导致的一般性问题,可以通过针对性代码进行处理。编译时异常和运行时异常)
3、所有的异常类是从 java.lang.Exception 类继承的子类。
解决异常的途经:
一、捕获异常
try { // 可能出现的异常 }catch(ExceptionName e1) { //处理方式 }
finally{//可写可不写,无论是否发生异常,总会执行}
当try块中检测出异常,在catch中进行捕获,从而称他们为保护代码。
public static void main(String args[]){
try{
int a[] = new int[2];
System.out.println("Access element three :" + a[3]);
}catch(ArrayIndexOutOfBoundsException e){
System.out.println("Exception thrown :" + e);
}
System.out.println("Out of the block");
}
结果:Exception thrown :java.lang.ArrayIndexOutOfBoundsException: 3
Out of the block
二、多重捕获
一个 try 代码块后面跟随多个 catch 代码块的情况就叫多重捕获。
多重捕获块的语法如下所示:
上面的代码段包含了 3 个 catch块。
可以在 try 语句后面添加任意数量的 catch 块。
如果保护代码中发生异常,异常被抛给第一个 catch 块。
如果抛出异常的数据类型与 ExceptionType1 匹配,它在这里就会被捕获。
如果不匹配,它会被传递给第二个 catch 块。
如此,直到异常被捕获或者通过所有的 catch 块。
若catch异常是包含关系,范围小的写上面。
- try, catch, finally 块之间不能添加任何代码。
三、解决异常方法二 throws
在一个方法中,可能不知如何处理该异常,可以逐层抛向上抛,直到main中,在向上抛的过程中,可以向上使用try——catch——finally进行处理。
在方法的申明出,显式的抛出对象异常类型。
四、声明自定义异常。