2010培训-java核心及基础应用-java 面向对象思想及核心 (杨振宇)异常类_第1页
2010培训-java核心及基础应用-java 面向对象思想及核心 (杨振宇)异常类_第2页
2010培训-java核心及基础应用-java 面向对象思想及核心 (杨振宇)异常类_第3页
2010培训-java核心及基础应用-java 面向对象思想及核心 (杨振宇)异常类_第4页
2010培训-java核心及基础应用-java 面向对象思想及核心 (杨振宇)异常类_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

九江学院软件工程研究所 Copyright 2010 九江学院 信息科学与技术学院 软件工程研究所工程实训中心 杨振宇2011.05第一阶段 Java核心及基础应用-Java面向对象思想及核心 九江学院软件工程研究所 Copyright 2010 九江学院 信息科学与技术学院 软件工程研究所工程实训中心 2Java 面向对象思想及核心 一、 Java基础二、面向对象编程三、继承与多态性 四、接口和包 五、字符串类 六、异常处理 七、高级类 八、图形界面编程 九、 IO输入输出流 十、多线程十一、网络编程 十二、集合框架 九江学院软件工程研究所 Copyright 2010 九江学院 信息科学与技术学院 软件工程研究所工程实训中心 31 异常和异常处理的两种方法2 Java的异常类3 Java的异常处理方法4 异常的抛出和处理 5 自定义的异常类异常处理 九江学院软件工程研究所 Copyright 2010 九江学院 信息科学与技术学院 软件工程研究所工程实训中心 4 异常 是指程序在执行过程中出现的意外事件。异常通常会使程序的正常流程被打断 一般情况下,程序中需要处理异常情况,通过对异常情况的处理,可以使程序的执行流程继续下去,并进行一些异常处理;否则,程序的正常执行流程会被中断 1.1 异常的基本类型1.2 Java的异常处理方法1、 异常和异常处理的两种方法九江学院软件工程研究所 Copyright 2010 九江学院 信息科学与技术学院 软件工程研究所工程实训中心 5 异常处理的第一步是确定异常的类型,常见的异常情况一般分为以下几类:1) 用户输入错误。 指用户键盘输入错误,输入格式不对或输入内容不符合程序要求等。例如,用户界面要求输入一个整数,而用户输入了一个字符串,或者要求用户输入一个 URL地址,但用户输入的地址语法错误等。2) 设备故障 。计算机硬件设备有时也会出故障,例如打印机没连接好,要求的网页没有找到等。3) 物理限制。 物理设备本身的限制,例如硬盘已存满,内存已用完等。4) 代码错误。 程序员编写的代码出现错误,例如从一个空的堆栈中弹出元素,数组下标为负数等 1.1 异常的基本类型九江学院软件工程研究所 Copyright 2010 九江学院 信息科学与技术学院 软件工程研究所工程实训中心 6Class ReadFiletry 打开文件关闭文件catch (文件打开失败异常 ) 处理文件打开失败异常 catch (关闭文件失败异常 ) 处理关闭文件失败异常 1.2 Java的异常处理方法九江学院软件工程研究所 Copyright 2010 九江学院 信息科学与技术学院 软件工程研究所工程实训中心 7 在 Java语言中, 用 try模块和 catch模块 把程序的正常流程代码和异常处理代码分离 把程序中 可能出现的异常情况都放进了 try模块中 ,而对于各种异常情况,设计了相应的 catch模块,这些模块可以用来捕捉这些异常情况,并进行相应的处理。 在 Java程序中,如果设计人员对可能出现的异常没有设计相应的 try模块和 catch模块,或设计人员无法预见的异常情况, 系统会将出现的异常交由 Java虚拟机( JVM) 处理, 此时 Java虚拟机会自动捕捉这些异常情况,并将异常情况在屏幕上显示出来 try模块和 catch模块九江学院软件工程研究所 Copyright 2010 九江学院 信息科学与技术学院 软件工程研究所工程实训中心 8 Java语言对大多数常见的异常都定义了异常类。这些异常类可以分为两大类: Error 类和 Exception 类 Error ( 错误)类和 Exception ( 异常)类的区别在于:1)错误 指的是系统异常或运行环境出现的异常, 这些异常一般是很严重的异常, 即使捕捉到通常也无法处理,例如 Java虚拟机异常。2) Exception类的 异常 指的是一般的异常, 例如,输入 /输出( I/O) 异常、数据库访问( SQL) 异常等。 对这些异常应用程序可以进行处理 2、 Java的异常类九江学院软件工程研究所 Copyright 2010 九江学院 信息科学与技术学院 软件工程研究所工程实训中心 9Java异常类的继承关系九江学院软件工程研究所 Copyright 2010 九江学院 信息科学与技术学院 软件工程研究所工程实训中心 10九江学院软件工程研究所 Copyright 2010 九江学院 信息科学与技术学院 软件工程研究所工程实训中心 11 在 Java程序中,用 try-catch( 或 try-catch-finally) 语句来抛出、捕捉和处理异常 try-catch-finally语句的语法格式是:try 可能抛出异常的语句模块; catch ( 异常类型 1 ) 处理异常类型 1语句; catch ( 异常类型 n ) 处理异常类型 n语句; finally 无论是否抛出异常都要执行的语句; 3 Java的异常处理方法九江学院软件工程研究所 Copyright 2010 九江学院 信息科学与技术学院 软件工程研究所工程实训中心 12( 1) try模块所有可能抛出异常的语句都放入 try模块中。 try模块中的语句是程序正常流程要执行的语句,但是在执行过程中有可能出现异常( 2) catch模块主要负责对抛出的异常做相应的处理。 try模块中的语句可能抛出很多不同类型的异常,所以需要针对不同类型的异常分别设计 catch模块,每一模块处理一种类型的异常对于这些 catch模块,其排列的先后顺序有如下规定:出现在前面的catch模块中的异常类一定要是后面的 catch模块中的异常类的子类, 这是因为 catch模块是按顺序执行的程序中即使没有 try模块,若出现了系统定义的异常,系统也会自动抛出,并由系统负责捕捉和处理( 3) finally模块finally模块中的语句是必须执行的语句。无论 try模块中是否抛出异常, finally模块中的语句时都要被执行。这个模块是可选的-实例运行 1try-catch-finally语句的功能为:九江学院软件工程研究所 Copyright 2010 九江学院 信息科学与技术学院 软件工程研究所工程实训中心 13 设计应用程序的一般方法是: 在 try模块中,应用程序自己判断是否有异常出现,如果有异常出现,则创建异常对象并用 throw语句抛出该异常对象;在 catch模块中,设计用户自己希望的异常处理方法。 throw语句的语法格式为:throw ; 4.1 在同一个方法中抛出异常和处理异常4.2 抛出异常和处理异常的方法不是同一个4 异常的抛出和处理九江学院软件工程研究所 Copyright 2010 九江学院 信息科学与技术学院 软件工程研究所工程实训中心 14 在同一个方法中抛出异常和处理异常。应用程序中,大部分异常的抛出和异常的处理采用这种设计方法。实例运行 2: 在同一个方法中抛出异常和处理异常示例。要求: 设计一个堆栈类,堆栈类中要求有一个入栈方法,该方法向堆栈中加入一个元素。当调用入栈方法且堆栈已满时会出现堆栈已满异常。处理异常的模块捕捉到该异常后,显示异常信息后退出系统 4.1 在同一个方法中抛出异常和处理异常九江学院软件工程研究所 Copyright 2010 九江学院 信息科学与技术学院 软件工程研究所工程实训中心 15 如果抛出异常的方法和处理异常的方法不是同一个方法时,则要求在抛出异常的方法定义后加如下语句: throws Exception。 然后,把 catch模块放在调用该方法的方法中 throws Exception语句的功能,是在调用方法和可能产生异常的被调用方法之间建立起系统处理异常所需的联系实例运行 3: 抛出异常和处理异常的方法不是同一个示例。要求:问题同例 8.3,但要求抛出异常和处理异常的方法不是同一个 4.2 抛出异常和处理异常的方法不是同一个九江学院软件工程研究所 Copyright 2010 九江学院 信息科学与技术学院 软件工程研究所工程实训中心 16 应用程序中除了可能出现系统定义的异常外,有时还可能出现系统没有考虑的异常。此时需要在应用程序中自定义异常类 一般情况下,自定义的异常类都是一些应用程序可以处理的异常。所以,自定义的异常类一般是 Exception类的子类 5、自定义的异常类九江学院软件工程研究所 Copyright 2010 九江学院 信息科学与技术学院 软件工程研究所工程实训中心 17抛出异常 throw 与声明异常 throws区别n throw 是用于手工抛出异常的关键字 。它的用法是: throw exceptionObj;其中, exceptionObj是一个从 Throwable 派生的异常类对象。在 Java 中, 一个异常对象被抛出有两种方式, 一是系统自动抛出,二是手工使用 throw 语句抛出。一般来说,系统自定义的异常一旦发生通常都是自动抛出的。如除零异常 ArithmeticException,数组越界异常 ArraylndexOutofBoundsException。 而程序员自己定义的异常,就需要手动使用 throw 语句来抛出。九江学院软件工程研究所 Copyright 2010 九江学院 信息科学与技术学院 软件工程研究所工程实训中心 18课堂练习 创建自己的日期错误异常类目的:(1)学会创建自己的异常类;(2)掌握如何使用自己的异常类;(3)了解简单的对话框 J0ptionPane 类的用法 。任务:设计一个 Computer类,此类中有一个计算最大公约数的方法,如果向该方法传递负整数,方法就抛出一个自定义的异常,异常类的命名为NopositiveException。九江学院软件工程研究所 Copyright 2010 九江学院 信息科学与技术学院 软件工程研究所工程实训中心 19异常处理的搜索n Java 的异常处理搜索机制大致是这样进行的,在程序运行过程中, 一旦有一个异常发生,那么该异常对象随即被产生并被抛出, 接下来,程序就开始为该异常搜索相应的处理代码。 首先 是在当前方法的 catch 块中依次搜索,若找到相应的 catch 块,则进行处理。 若未找到 ,则异常将被传递给该方法的上一级调用者, 然后进行同样的搜索 ,这个过程沿着方法调用链一直持续下去, 直到该异常在某个方法中被捕获或最终由 Java 虚拟机捕获并处理 。九江学院软件工程研究所 Copyright 2010 九江学院 信息科学与技术学院 软件工程研究所工程实训中心 20实验目的:(1)理解异常处理的搜索机制;(2)学会使用 finally 语句;(3)知道如何重新抛出一个异常课堂练习 异常处理的链式 搜索任务: 创建一个程序,该程序包含多个方法 methodA, methodB, methodC,这些方法形成三级调用,主方法 main 调用 methodA, methodA 调用 methodB, methodB 调用 methodC,最后 methodC 会抛出一个异常,用户的任务是观察这个异常是如何被截获和处理的,在这个过程中用户会被要求对原始程序进行适当的修改,并观察修改后程序运行的结果,从而加深对异常处理机制的理解。九江学院软件工程研究所 Copyright 2010 九江学院 信息科学与技术学院 软件工程研究所工程实训中心 211)首先在前面实验的项目中加入一个新的程序命名为SearchForExceptionHandler.java,编译并运行这个程序,写出结果并分析。点评:在这个程序中,从主函数 main()开始,依次按顺序嵌套调用了 methodA, methodB, methodC,而在 methodC 中由 throw new MyException()语句抛出一个 MyException 异常,于是该异常便开始沿着一条搜索链搜寻它的处理器,最终在 main()函数中捕获了这个异常并进行相应的处理以输出 Exception caught in Main九江学院软件工程研究所 Copyright 2010 九江学院 信息科学与技术学院 软件工程研究所工程实训中心 22(2)现在请将 methodA 中对 methodB 的调用加上一组 try/catch 语句。九江学院软件工程研究所 Copyright 2010 九江学院 信息科学与技术学院 软件工程研究所工程实训中心 23 对比程序运行的结果。为什么程序输出最后一行从 Exception caught in Main变成了 Exception caught in MethodA呢 ?请分析其中的原因。现在请在 main()方法和 methodA()方法中分别加入如下两个 finally 语句。然后运行这个程序,这两个 finally 语句都会输出吗,还是仅仅输出其中的一个呢 .九江学院软件工程研究所 Copyright 2010 九江学院 信息科学与技术学院 软件工程研究所工程实训中心 24点评:在异常处理中, finaIly 语句的作用就是不论异常是否发生,在 try/catch 块之后都要执行 finally 块中的语句,以完成一些必要的操作,如关闭打开着的文件。因此在本例中两个 finally 语句都会输出,尽管对 main()方法来说并未发生异常。九江学院软件工程研究所 Copyright 2010 九江学院 信息科学与技术学院 软件工程研究所工程实训中心 25(3)如果现在要求程序中的 main()方法仍能捕获该异常,并且有如下的输出形式,请问应该如何修改程序 ? 九江学院软件工程研究所 C

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论