有关异常的内容很琐碎,不具有很强的连贯性,尝试与其它的知识结合起来去理解记忆。
是什麽——>为什么——>怎么做
是什麽?
异常:程序运行过程中可能会出现的异常事件。百度百科中的图对其分类做了很好的解释(http://baike.baidu.com/subview/209658/8059007.htm#viewPageContent)
Error:由系统处理
RuntimeException:可处理可不处理
Exception中另一分支:必须进行捕获处理
为什么?
这可从其优点处考虑:
怎么做?
异常的抛出:
throw new 异常名(参数);
抛出的异常可以是系统设置好的异常,也可以是程序员自己定义的异常【但自定义的异常必须继承自系统设置的异常(Throwable或Exception)】,如上图中所示,一般从Exception继承
捕获处理:
有两种方式
1)try...catch...在本方法内部处理
2)throws 返回给上一级处理【要注意的是,throws中不一定会有异常抛出;若对异常做了内部处理,就不要再throws】
try {
//可能会出现异常事件的程序
}
catch (异常类别 异常名) {
//捕获后对异常的处理操作
}
catch (异常类别 异常名) {
//捕获后对异常的处理操作
}
finally {
//不管是否出现异常,都会执行finally中的程序
}
要注意以下几点:
(1)异常类似于if...else if...else语句,但在输入输出出现异常的环境下,只有异常可以进行处理【因if...else需导入输入输出信息才可判断,并且是直接认定程序运行出错,没有缓冲处理】
(2)每次只能有一个catch被执行(也可一个都没有)
(3)重写后抛出的异常对象的范围不能超过父类的范围
(4)catch的顺序:子类在前,父类在后【父类在前会报错】
(5)finally中的语句必定会被执行【可用来对异常进行整体的处理,或是做一些程序中需要的处理操作】