Java语言程序设计实用教程( 第三版) 高职软件专业 赵从军 第9章 异常处理.ppt
文本预览下载声明
尚辅网 尚辅网 Java语言程序设计实用教程 第9章 异常处理 异常的概念 常用的RuntimeException类的子类(表9-1) 异常处理的方法 异常处理方法 异常处理的方法有两种: 一种是使用try……catch……finally对异常进行捕获,方法自身对异常进行捕获; 另一种是通过throws和throw抛出异常,让调用它的方法对异常进行处理。 try...catch…finally结构 用try{…}选定捕获例外的范围,由try所限定的语句在执行过程中可能会生成例外对象并抛弃。 try代码块可以伴随一个或多个catch语句,用于处理try代码块中所生成的例外对象。catch语句中形参指明它所能够捕获的例外对象。 捕获例外的顺序和catch语句的顺序有关,当捕获到一个例外时,剩下的catch语句就不再进行匹配。因此,在安排catch语句的顺序时,首先应该捕获最特殊的例外,然后再逐渐一般化。也就是一般先安排子类,再安排父类。 finally是可选项,通过finally语句为例外处理提供一个统一的出口。不论在try代码块中是否发生了异常事件,finally块中的语句都会被执行。 有时,块的一部分引起一个错误,而整个块可能又引起另一个错误。在此情况下,需要将一个异常处理程序嵌套到另一个中。 在使用嵌套的try块时,将先执行内部 try 块,如果没有遇到匹配的 catch 块,则将检查外部 try 块的 catch 块。 嵌套 try – catch 块 抛出异常 抛出自己的异常 函数抛出异常 自定义异常 自定义异常类 自定义异常类 小结 例外处理是java语言中一个独特之处,主要使用捕获例外和声明抛弃例外两种方法来处理程序中可能出现例外的语句块,其中捕获例外的方法是一种积极地处理例外的方法,而声明抛弃例外是一种消极的处理例外的方法。 SISE Java语言程序设计实用教程 尚辅网 尚辅网 尚辅网 * 本章学习要点: 理解异常的概念 掌握运用try块、catch块和finally块处理异常 掌握运用多重catch块处理异常 掌握运用嵌套try/catch块处理异常 掌握运用关键字throw和throws引发异常 掌握运用Java编写和使用自定义异常 尚辅网 尚辅网 异常的概念 所谓异常,是指由于程序运行时发生错误,从而导致程序错误结束。 内存用完 找不到文件 网络连接故障 良好的程序除具有用户所需求的功能外,还应该具备预见并处理可能发生的各种异常的功能 Java给程序员提供了处理运行时错误的功能,称为异常处理。没有异常处理代码的程序,在运行时发生错误则可能非正常结束,引起严重问题。例如,程序将钱从储蓄账户转账到经常账户时,当钱从储蓄账户提出还未存入经常账户时,由于运行时错误,程序终止,用户就会损失掉这笔钱。 尚辅网 异常类(见P213,图9-1) 在java的异常处理机制中,定义了很多用来描述和处理异常的类,称为异常类。所有的异常类都直接或间接从Throwable类继承。 Throwable类有两个直接子类:Error类及Exception类,后者是Java程序中需要大量处理的。Error类描述的是内部系统错误,包括动态链接失败、虚拟机错误等,Java程序不做处理。Exception类描述的是程序和外部环境引起的错误,这些错误能通过程序捕获和处理 每种异常类对应着某一种或者一类错误,类中可以包含该运行的错误信息和处理错误的方法等内容。 尚辅网 RuntimeException类是Exception 类的子类,用来描述编程错误。如被0除等系统错误、数组下标超范围等。它一般由系统检测, 用户可不做处理,系统将它们交给缺省的异常处理程序。 1)算术异常ArithmeticException 该异常类型在进行数学运算过程中,由于除法运算中的除数为0,则产生算术异常。 2)数组越界异常IndexOutOfBandsException 该异常用于在数组等数据元素有一定范围的数据存储结构中,当数组存储超过指定界限时产生。 3)类型转换异常ClassCastException 该类异常时由于在变量类型转换过程中,被转换变量无法转换为指定类型的变量所导致。 尚辅网 常用的RuntimeException类的子类(二) 4)未找到类定义异常NoClassDefFoundException 如果Java程序在编译过程中,根据Java源程序指定的包路径没有发现指定的类,则抛出该异常。 5)安全异常SecurityException 当Java系统检测到违反安全的行为,则抛出该异常。 6)空指针异常NullPointerException 除了Java类库所定义的异常
显示全部