Java语言程序设计基础教程课件(第9章).ppt
《Java语言程序设计基础教程课件(第9章).ppt》由会员分享,可在线阅读,更多相关《Java语言程序设计基础教程课件(第9章).ppt(29页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第9章异常处理 n了解异常处理的基础知识了解异常处理的基础知识 n理解异常处理机制理解异常处理机制 n自定义异常类的使用自定义异常类的使用 9.1异常处理基础n异常就是在程序的运行过程中所发生的异常事件,它中断指令的正常执行。Java中提供了一种独特的处理异常的机制,通过异常来处理程序设计中出现的错误。当程序运行出现异常时,Java运行环境就用异常类Exception的相应子类创建一个异常对象,并等待处理,例如,读取一个不存在的文件时,运行环境就用异常类IOException创建一个对象。异常对象可以调用如下方法得到或输出有关异常的信息。9.1.1异常示例n【例9-1】读取一个不存在的文件时,
2、系统编译的时候报异常。nimport java.io.*;nclass ExceptionDemo1 npublic static void main(String args)throws IOException nFileInputStream fis=new FileInputStream(test.txt);nint b;nwhile(b=fis.read()!=-1)nSystem.out.print(b);nnfis.close();nnn查看程序的编译结果:n编译结果提示:第4行会出现异常,必须对其进行捕获或声明抛出,否则程序编译无法通过。9.1.2异常类的层次n在jdk中,每个包
3、中都定义了异常类,而所有的异常类都直接或间接地继承于Throwable类。图9-1为jdk中异常类的继承关系。n异常的继承结构:基类为Throwable,Error和Exception继承Throwable,RuntimeException和 IOException等 继 承Exception,具体的RuntimeException继承RuntimeException。9.1.3异常类的分类nJava中的异常类可分为两大类:Error和Exception。nError动态链接失败,虚拟机错误等,通常Java程序不应该捕获这类异常,也不会抛弃这种异常。nException包括运行时异常和非运行时
4、异常。1)运行时异常:n继承于RuntimeException的类都属于运行时异常,例如算术异常(除零错)、数组下标越界异常等等。由于这些异常产生的位置是未知的,Java 编译器允许程序员在程序中不对它们做出处理。2)非运行时异常:n除了运行时异常之外的其他由Exception 继承来的异常类都是非运行时的异常,例如FileNotFoundException(文件未找到异常)。Java编译器要求在程序中必须处理这种异常,捕获异常或者声明抛弃异常。1Error体系类型异常的特点体系类型异常的特点 nError类体系描述了Java运行系统中的内部错误以及资源耗尽的情形。应用程序不应该抛出这种类型的
5、对象(一般是由虚拟机抛出)。如果出现这种错误,除了尽力使程序安全退出外,在其他方面是无能为力的。所以,在进行程序设计时,应该更关注Exception体系。2Exception体系类型异常的特点体系类型异常的特点 nException体系包括RuntimeException体系和其他非RuntimeException的体系 n(1)RuntimeException nRuntimeException体系包括错误的类型转换、数组越界访问和试图访问空指针等等。处理RuntimeException的原则是:如果出现RuntimeException,那么一定是程序员的错误。例如,可以通过检查数组下标和数
6、组边界来避免数组越界访问异常。n(2)其他(IOException等等)n这类异常一般是外部错误,例如试图从文件尾后读取数据等,这并不是程序本身的错误,而是在应用环境中出现的外部错误。9.2异常的处理nJava语言中有两种异常处理机制:捕获异常和声明抛弃异常。n(1)捕获异常:n当Java运行环境得到一个异常对象时,它将会沿着方法的调用栈逐层回溯,寻找处理这一异常的代码。找到能够处理这种类型的异常的方法后,运行环境把当前异常对象交给这个方法进行处理,这一过程称为捕获(catch)异常。这是积极的异常处理机制。如果Java运行环境找不到可以捕获异常的方法,则运行环境将终止,相应的Java程序也将
7、退出。n(2)声明抛弃异常:n如果一个方法并不知道如何处理所出现的异常,则可在方法声明时,声明抛弃(throws)异常。这是一种消极的异常处理机制。9.2.1捕获异常n捕获异常是通过try-catch-finally语句实现的。ntry n.ncatch(ExceptionName1 e)n.ncatch(ExceptionName2 e)n.n n.nfinally n.n n try n捕获异常的第一步是用try选定捕获异常的范围,由try所限定的代码块中的语句在执行过程中可能会生成异常对象并抛弃。n catch n每个try代码块可以伴随一个或多个catch语句,用于处理try代码块中所
8、生成的异常事件。catch语句只需要一个形式参数指明它所能够捕获的异常类型,这个类必须是Throwable的子类,运行时系统通过参数值把被抛弃的异常对象传递给catch块。n在catch块中是对异常对象进行处理的代码,与访问其它对象一样,可以访问一个异常对象的变量或调用它的方法。getMessage()是类Throwable所提供的方法,用来得到有关异常事件的信息,类Throwable还提供了方法printStackTrace()用来跟踪异常事件发生时执行堆栈的内容。例如:ntry n.ncatch(FileNotFoundException e)nSystem.out.println(e);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 语言程序设计 基础教程 课件
限制150内