1.异常与控制流
一个函数的入口是参数,出口是return语句,异常是另一个出口。
1.1异常的产生与捕获
产生
捕获
1.2finally
finally是在方法的最后去做一些事,不论有没有异常。如果有异常,那么也要做。
finally用法
执行finally里面的return(不要这么做,finally只执行资源的清理)
1.3try-with-resources
使用前,在finally里面清理。
使用后,try后面的()内的内容,会在执行结束后自动清理。
2.异常的类型体系
2.1Throwable
Exception(受检异常;有毒)
只要a方法写了throw或者throws,那么所有调用到的a方法的方法都要加上throws或者try,catch。
1.throw
在方法执行到这行之后,下一个要做的事情就是丢出异常,中断当前方法的执行,知道碰到一个能捕捉到它的方法为止。
2.throws
throws是声明在方法上面,表示将来可能会丢出什么东西。
所有调用带有throws方法的方法都要加上throws。
或者使用try,catch将异常抓住。
RunTimeException预料之外的异常(运行时异常;无毒)
Error(不受检异常;无毒)
error是错误是无法处理的,而exception异常是可以处理和回复的。
2.2catch级联
如果没有异常抛出,就继续执行后面的语句。
要从小到大的顺序来catch
3.异常的栈轨迹
3.1栈轨迹
main函数调用a方法,a方法调用b方法,b方法调用foo方法,foo方法抛出异常。
方法调用的栈轨迹。