层次结构:
Throwable
——Exception
——IOEception
——RuntimeException
——ArrayIndexOutOfBoundsException
——Error
受查异常:在编译的时候必须处理,不处理编译通不过(往往在代码控制能力之外的因素,比如访问的文件不存在)
非受查异常:可以在编译的时候不处理,编译通过,但在运行的时候可能出错导致程序中断,往往是是程序编写的问题导致,比如分母为0;
try{
可能出错的程序代码
}catch(异常类型 e){
}[可以有多个catch]
finally
{
(不管有没有异常都会执行主要用来释放资源)
}
注意:我们可以直接用一个异常的父类型进行捕获所有的子异常(多态),记住,先具体的异常捕获再通用的捕获;
finally可以省略;
try可以和catch一起使用,也可以和finally一起使用;
finally在return之前先执行。
当结束进程的时候System.exit(0) 结束进程 finally就不会执行了。
throw:手动抛出一场,往往在方法中的任意位置抛出一个异常。
throws:用来修饰方法的,告知调用者我这个方法可能会抛异常。
1.方法抛出的是非受查异常,调用者可以不捕获,但不推荐,最好调用者去捕获方法告知的异常,防止程序中断。
2.方法抛出的是受查异常,那么调用者必须去捕获抛出的异常,否则编译都通不过。