第1章 异常
1.1 概念
不正常,是编译或者运行时期出现的问题。
1.2 体系结构
l Throwable(所有错误或异常的根类)
n Error(错误,不可挽回的严重问题)
n Exception(异常根类,可以挽回的问题)
u RuntimeException(运行时异常);
1.3 异常处理方式
1.3.1 try..catch捕获处理
l 格式
try {
要检测的异常;
} catch(要捕获的异常 变量名) {
处理方式;
}
l 执行流程:先去执行try中的代码,如果try中的代码有异常,判断catch中是否可以捕获到,如果没有捕获到,直接抛出,如果捕获到了,就执行对应的catch。如果try中的代码没有异常,就跳过catch,继续往下执行
l 注意:一个try可以对应多个catch,只执行一个catch。在catch中捕获的异常,父类不能出现在子类的前面。
1.3.2 抛出异常
l 当我们不想处理,或者没有能力处理时,这时候可以选择吧异常给跑出去。
l throws:用在方法声明位置上,给方法做一个声明,声明此方法有可能会抛出异常。如果调用一个声明了异常的方法,调用者,也需要声明异常
l throw:手动制造一个异常抛出
1.4 Throwable常用方法
String getMessage():返回简短的错误信息
String toString():返回详细的错误信息
void printStackTrace():打印非常详细的错误信息(最详细)
1.5 finally
用来结合try…catch使用finally修饰的代码块,无论如何都会执行,finally代码块一般用来做收尾工作,比如释放资源
1.6 异常分类
运行时异常:RuntimeException它或者它下面的子类,编译时期可以处理也可以不处理
编译时异常: RuntimeException它体系外的异常都属于编译时异常,编译时异常在编译时期必须要处理
1.7 自定义异常
自己写一个类,然后继承自异常类中的一个类就可以
第2章 递归
2.1 概念
方法直接或者间接的调用它本身
2.2 注意事项
l 一定要有出口。没有出口会死循环导致内存溢出
l 次数不能过多,会内存溢出