理论教育 Java程序设计-异常捕获与处理

Java程序设计-异常捕获与处理

时间:2023-11-21 理论教育 版权反馈
【摘要】:在程序中使用try-catch捕获异常。通常在一个try块后跟一个或多个包含异常指针的catch块来处理指定的异常。catch语句的参数类似于方法的声明,包括一个异常类型和一个异常对象。异常类型必须为Throwable类的子类,它指明了catch语句所处理的异常类型。使用多个catch语句捕获可能产生的多个异常。

Java程序设计-异常捕获与处理

为了防止和处理运行时错误,只需要把所监控的代码放进try块中就可以了。放进try块后,可以包括一个或多个说明程序员希望捕获的错误类型的catch子句,基本格式如下所示:

1.try和catch语句

[例10.2]是对[例10.1]的改进,在其中加入了异常处理。

【例10.2】 在程序中使用try-catch捕获异常。

运行此程序,结果如图10.3所示。

图10.3 [例10.2]的运行结果

捕获异常的第一步是用try{…}选定捕获异常的范围,在执行过程中,由try所指定的代码中的语句会生成异常对象并被抛出。通常在一个try块后跟一个或多个包含异常指针的catch块来处理指定的异常。catch语句的参数类似于方法的声明,包括一个异常类型和一个异常对象。异常类型必须为Throwable类的子类,它指明了catch语句所处理的异常类型。异常对象则在运行时由系统在try所指定的代码块中生成并被捕获。

catch语句可以有多个,分别处理不同类的异常。Java运行时系统从上到下分别对每个catch语句处理的异常类型进行检测,直到找到类型相匹配的catch语句为止。这里,类型匹配是指catch所处理的异常类型与生成的异常对象的类型完全一致或者是它的父类,因此,catch语句的排列顺序应该是从特殊到一般。(www.daowen.com)

【例10.3】 使用多个catch语句捕获可能产生的多个异常。

上述程序的运行结果如图10.4所示。

图10.4 [例10.3]的运行结果

从运行结果可以看出,ArithmeticException被捕获了,而Array IndexOutOfBoundsException没有被捕获。

如果不能确定程序中到底会发生何种异常,那么在程序中可以不用明确地抛出某种异常,而直接使用Exception类,因为它是所有异常类的超类,所以不管发生任何类型的异常,都会和Exception匹配,也就会被捕获。如果想知道究竟发生了何种异常,可以通过向控制台输出信息来判断,使用toString()方法可以输出具体异常信息的描述。

2.finally语句

try块中的代码当执行到某一条语句抛出了一个异常,其后的代码不会被执行。但有时异常发生后需要做一些善后处理,那么这时可以使用finally语句。finally语句创建了一个代码块,无论try所指定的程序块中是否抛出异常,也无论catch语句的异常类型是否与所抛出的异常类型一致,finally所指定的代码块都要被执行,它提供了统一的出口。可以把一些善后的工作放在finally代码块中,例如关闭打开的文件、数据库和网络连接等。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈