第九章 异常的捕获和处理

一、异常概述*
** 1、认识异常**
异常是指在程序运行过程中所发生的不正常事件。异常会中断正在运行的程序
if-else 语句进行异常处理的缺点:
(1)代码臃肿,加入了大量的异常情况进行判断和处理代码
(2)影响开发效率
(3)很难穷举所有的异常情况,程序仍旧不健壮
(4)异常处理代码和业务代码交织在一起,影响代码的可读性,加大维护难度
**2、java异常体系结构
** 所有异常类型都是Throwable类的子类,它派生了两个子类:Error类和Exception
Error类:表示仅靠程序本身无法恢复的严重错误
Throwable类:有java应用程序抛出和处理的非严重错误
二、java异常处理机制
1、异常处理
异常处理的关键字:try、catch、finally、throw、throws
java中提供了try-catch结构进行异常捕获和处理,把可能出现异常的代码放入try语块中,并使用catch语句块捕获异常
try-catch语句块执行流程:
(1)如果try语句块中所有语句正常执行完毕,没有发生异常,那么catch语句块中所有语句都将会被忽略
(2)如果try语句块在执行过程中发生异常,并且这个异常与catch语句块中声明的异常类型匹配,那么try语句块中剩
下的代码都将被忽略,而相应的catch语句块会被执行
(3)如果try语句块执行过程中发生异常,而抛出的异常在catch语句块中没有被声明,那么方法立刻退出
2、使用try-catch-finally处理异常
try-catch-finally语句块执行流程
(1)如果try语句块中所有语句正常执行完毕,finally语句块也会被执行
(2)如果try语句块在执行过程中发生异常,无论这种异常能否被catch语句块捕获到,都将执行finally语句块中的代码
try-catch-finally结构中try语句块是必须存在的,catch和finally语句块可选,但是两者至少出现其中之一
执行顺序:
先执行catch语句块中的return之前的语句,再执行finally语句块中的语句,最后执行catch语句块中的return语句退出
三、使用多重catch处理异常
一段代码可能会引发多种类型的异常,这是,可以在一个try语句块后面跟多个catch语句块分别处理不同的异常,但排列顺
序必须是从子类到父类,最后一个一般是Exception。因为按照匹配原则,如果把父类异常放到前面,后面的catch语句块将
不会获得执行机会
四、使用throws声明抛出异常
如果一个方法体中抛出了异常,并希望调用者能够即使的捕获异常,java语言中通过关键字throws声明某个方法可能抛出的各
种异常以通知调用者,throws可以同时声明多个异常,之间由逗号隔开
除了系统自动抛出异常外,在编程过程中,有些问题是系统无法自动发现并解决的,此时使用throw关键字来自行抛出异常
五、自定义异常
当JDK中的异常类型不能满足程序的需要时,可以自定义异常类,步骤如下:
(1)定义异常类并继承Exception或者RuntimeException
(2)编写异常类的构造方法,并继承父类的实现
(3)实例化自定义异常对象,并在程序中使用throw抛出

上一篇:浅谈前端异常监控平台实现方案


下一篇:异常-捕获和抛出异常