1、什么是异常(Exception)
异常是运行时发生的错误;java命令
代码中的语法错误不是异常,而是编译错误;javac命令
2、异常的层次结构
Object
Throwable(可抛出的)
Error(jvm层面)
Exception
受检查异常
运行时异常
3、java中处理异常的机制
抛出->捕获
4、处理异常的语法
try{
//语句块,可能产生异常的语句
}catch(异常类型 e){
//处理异常
}
5、关于try和catch使用的注意事项
-
每个try块可以对应多个catch,如果catch中能捕获异常,则进行捕获,如果捕获不到,则继续向外抛出;
-
每个try块中可以包含多行代码,一旦出现异常,try块中余下的代码不会再执行
-
如果有多个catch块,那么父类的异常应该放在后面,否则出现编译错误
6、关于finally
-
一个try块中最多可以包含一个finally(可以没有);并且放在try结构的最后;
-
只要进入try块,finally中的代码一定会被执行(退出jvm除外);因此我们可以将一定执行的代码(例如释放资源)放在finally中;
-
一个try块中至少应该对应catch或finally中的一个; (先执行return语句再执行finally中的代码)
7、final,finally,finalize的区别?
8、异常对象可以由jvm和用户编码来创建抛出(throw异常对象)
语法:
throw 异常对象;
9、throws关键字
throws放在方法声明之后,throws后面加入一个异常类;说明此方法会抛出一个某类型的异常;
10、异常(Exception)的分类
运行时异常:可以不处理
RuntimeExeption及其子类;
受检查异常:必须处理,否则不能通过编译;
Exception及其除RuntimeExeption外的子类;
Exception
.....
RuntimeException
.....
11、处理异常的两种方式
- 自行处理:通过try-catch自行解决
- 回避处理:将异常抛给调用者处理,优点是调用者可以自己决定如何处理异常;把处理权交给调用者
12、自定义异常
定义一个类继承Exception或RuntimeException即可;