书签 分享 收藏 举报 版权申诉 / 52
上传文档赚钱

类型《基于任务驱动模式的Java程序设计》课件第六章.pptx

  • 上传人(卖家):momomo
  • 文档编号:7924390
  • 上传时间:2024-09-04
  • 格式:PPTX
  • 页数:52
  • 大小:799.81KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《《基于任务驱动模式的Java程序设计》课件第六章.pptx》由用户(momomo)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    基于任务驱动模式的Java程序设计 基于 任务 驱动 模式 Java 程序设计 课件 第六
    资源描述:

    1、异 常 处 理一、异常和异常处理二、异常处理语句 三、创建用户自定义异常类第一节 异常和异常处理异常是程序运行过程中由于硬件设备问题或者软件设计缺陷而产生的不正常情况,如文件找不到、网络连接失败、非法参数等。异常是一个事件,它发生在程序运行期间,干扰了正常的指令流程。它主要帮助我们在debug的过程中解决下面三个问题。什么出错?哪里出错?为什么出错?第一节 异常和异常处理异常和异常处理一、异常但是,并不是所有的错误都是异常,错误有时候是可以避免的。比如,代码少了一个分号,那么运行结果会提示java.lang.Error,表示出错;如果使用System.out.println(11/0)语句,那

    2、么因为用0做了除数,系统会抛出java.lang.ArithmeticException的异常。有些异常需要作处理,有些则不需要。第一节 异常和异常处理异常处理是程序设计中一个非常重要的方面,也是程序设计的一大难点。从学习编程开始,我们会有意或无意地使用if-else来控制异常,然而这种控制非常繁琐,如果多个地方出现同一个异常或者错误,那么每个地方都要作相同处理,感觉相当麻烦,因此很多编程语言设计了异常处理机制。第一节 异常和异常处理二、异常处理机制异常处理机制是指当异常产生时,为了让程序不中断而继续运行的机制。每种语言对于异常的处理可能会不一样,在Java中,异常处理机制包括Error和Ex

    3、ception两个部分。它们都继承自一个共同的基类Throwable。第一节 异常和异常处理Error属于JVM运行中发生的一些错误,虽然并不属于开发人员的范畴,但是有些Error还是由代码引起的。比如,StackOverflowError经常由递归操作引起,这种错误一般无法挽救,只能依靠JVM。而Exception假设程序员会处理这些异常,比如数据库连接出了异常,那么我们可以处理这个异常,并且重新连接等。Exception分为两种,即检查类型(Checked)和非检查类型(Unchecked)。检查类型的异常是指程序员明确地声明或者用try-catch语句来处理的异常,而非检查类型的异常则没

    4、有这些限制。第一节 异常和异常处理Java中的异常用对象来表示。Java对异常的处理是按异常分类进行的,不同异常有不同的分类,每种异常都对应一个类型(Class),每个异常都对应一个异常(类的)对象。异常类的来源有两个:一是Java语言本身定义的一些基本异常类型,二是用户通过继承Exception类或者其子类自己定义的异常。Exception 类及其子类是 Throwable 的一种形式,它指出了合理的应用程序想要捕获的条件。第一节 异常和异常处理三、Java中异常类和异常对象异常对象的来源有两个:一是Java运行时环境自动抛出系统生成的异常,而不管程序员是否愿意捕获和处理,它总要被抛出,比如

    5、除数为0的异常;二是程序员自己抛出的异常,这个异常可以是程序员自己定义的,也可以是Java语言中定义的,用throw 关键字抛出异常,该异常用来向调用者汇报异常的一些信息。第一节 异常和异常处理三、Java中异常类和异常对象Java异常类层次结构如图6.1所示。第一节 异常和异常处理Throwable类是Java语言中所有错误或异常的超类。只有当对象是此类(或其子类之一)的实例时,才能通过Java虚拟机或者Java throw语句抛出。类似,只有此类(或其子类之一)才可以是catch子句中的参数类型。两个子类的实例,Error和Exception通常用于指出发生了异常情况。这些实例一般是在异常

    6、情况的上下文中新近创建的,因此包含了相关的信息(比如堆栈跟踪数据)。第一节 异常和异常处理1.ThrowableException类及其子类是Throwable的一种形式,它指出了合理的应用程序想要捕获的条件,表示程序本身可以处理的异常。第一节 异常和异常处理2ExceptionError是Throwable的子类,表示仅靠程序本身无法恢复的严重错误,用于指出合理的应用程序不应该试图捕获的严重问题。在执行该方法期间,无需在方法中通过throws声明可能抛出但没有捕获的 Error 的任何子类,因为Java编译器不去检查它。也就是说,当程序中可能出现这类异常时,即使没有用try-catch语句捕

    7、获它,也没有用throws子句声明抛出它,编译也能通过。第一节 异常和异常处理3ErrorRuntimeException是那些可能在Java虚拟机正常运行期间抛出的异常的超类。Java编译器不去检查它。也就是说,当程序中可能出现这类异常时,即使没有用try-catch语句捕获它,也没有用throws子句声明抛出它,编译也能通过。这种异常可以通过改进代码实现来避免。以上是对有关异常API的一个简单介绍,用法都很简单,关键在于了解异常处理的原理,具体用法参看Java API文档。第一节 异常和异常处理4RuntimeException在Java应用程序中,异常处理机制分为抛出异常和捕捉异常。抛出

    8、异常:当一个方法出现错误引发异常时,方法创建异常对象并交付运行时系统,异常对象中包含了异常类型和异常出现时的程序状态等异常信息。运行时系统负责寻找处置异常的代码并执行。第一节 异常和异常处理四、异常捕获与处理捕获异常:在方法抛出异常之后,运行时系统将转为寻找合适的异常处理器(Exception Handler)。潜在的异常处理器是异常发生时依次存留在调用栈中的方法的集合。当异常处理器所能处理的异常类型与方法抛出的异常类型相符时,即为合适的异常处理器。运行时系统从发生异常的方法开始,依次回查调用栈中的方法,直至找到含有合适异常处理器的方法并执行。当运行时系统遍历调用栈而未找到合适的异常处理器时,

    9、运行时系统终止。同时,意味着Java程序的终止。第一节 异常和异常处理Java的异常处理是通过5个关键字来实现的:try、catch、throw、throws和finally。其处理过程如图6.2所示。第一节 异常和异常处理1.异常处理的关键字try语句块中是要执行的代码,如果这段代码出现了异常,系统将会自动抛出(throws)一个异常,而catch后面有对应的异常,程序将进入对应的catch语句块;最后,不管是否有异常,程序将进入finally语句块进行缺省处理。第一节 异常和异常处理异常处理程序的基本形式如下:try/代码块catch(ExceptionType1 e)/处理Excepti

    10、onType1类型的异常catch(ExceptionType2 e)第一节 异常和异常处理/处理ExceptionType2类型的异常throw(e);/再抛出ExceptionType2类型的异常finally /缺省处理代码注意:catch语句块可以存在多个,因为在程序运行的过程中,可能会发生多种异常,我们需要多个catch以提高程序的适应性。第一节 异常和异常处理异常类(Exception)的子类很多,大致分为有关I/O的IOException、有关运行时异常的RuntimeException和其他异常三类。(1)IOException:由于I/O系统堵塞等原因引起的异常,包括试图从文

    11、件结尾处读取信息、试图打开一个不存在或者格式错误的URL。第一节 异常和异常处理2.异常的类型常见的IOException如下:FileNotFoundException:文件未找到异常。EOFException:读写文件尾异常。MalformedURLException:URL格式错误异常。SocketException:Socket异常。第一节 异常和异常处理(2)RuntimeException:由于程序编写过程中考虑不周全而引起的异常,包括错误的类型转换、数组越界访问、数字计算错误、试图访问一个空对象等。常见的RuntimeException如下:ArithmeticException

    12、:数学计算异常。NullPointerException:空指针异常。NegativeArraySizeException:负数组长度异常。ArrayOutOfBoundsException:数组索引越界异常。ClassNotFoundException:类文件未找到异常。ClassCastException:造型异常。第一节 异常和异常处理(3)其他异常:包括用Class.forName()来初始化一个类,字符串参数或对应的类不存在等。常见的其他异常如下:ClassCastException:类型转换异常。ArrayStoreException:数组中包含不兼容的值抛出的异常。SQLExce

    13、ption:操作数据库异常。NoSuchFieldException:字段未找到异常。NoSuchMethodException:方法未找到抛出的异常。NumberFormatException:字符串转换为数字抛出的异常。StringIndexOutOfBoundsException:字符串索引超出范围抛出的异常。IllegalAccessException:不允许访问某类异常。InstantiationException:当应用程序试图使用Class类中的newInstance()方法创建一个类的实例,而指定的类对象无法被实例化时,则抛出该异常。第一节 异常和异常处理一,try语句不能单独

    14、存在,可以和catch、finally组成try-catch-finally、try-catch-try、finally三种结构;catch语句可以有一个或多个;finally语句最多一个;try、catch、finally这三个关键字均不能单独使用。第二,try、catch、finally三个代码块中变量的作用域分别独立且不能相互访问。如果要在三个块中都可以访问,则需要将变量定义到这些块的外面。第一节 异常和异常处理3.异常处理的语法规则第三,存在多个catch块时,Java虚拟机会匹配其中一个异常类或其子类,来执行这个catch块,而不会再执行别的catch块。第四,throw语句后不允许

    15、紧跟其他语句,因为这些语句没有机会执行。第五,如果一个方法调用了另外一个声明抛出异常的方法,那么这个方法要么处理异常,要么声明抛出。第一节 异常和异常处理首先,看这样一个程序:public class ExceptionTest public static void main(String args)int a=12,b=0;int d;d=a/b;System.out.println(a+/+b+=+d);第一节 异常和异常处理五、一个异常处理的实例这个程序中,b变量的值是0,但是它却是除数,所以这个程序不能运行。此时,将异常处理加入该程序,修改后的程序如下:public class Exc

    16、eptionTest public static void main(String args)try int a=12,b=0;int d;d=a/b;System.out.println(a+/+b+=+d);第一节 异常和异常处理catch(arithmeticexception e)system.out.println(零不能做除数哦!);当有异常处理的时候,程序发生了除零异常,这将会被catch(arithmeticexception e)捕捉到,从而输出提示语句“零不能做除数哦!”。这样,程序适应性更强了,也更友好了。第一节 异常和异常处理第二节 Java语言概述第二节 异常处理语句

    17、在Java中,异常一般通过try-catch语句来捕获。其语法格式如下:try /可能会发生异常的程序代码 catch(Type1 id1)/捕获并处置try抛出的异常类型Type1 catch(Type2 id2)/捕获并处置try抛出的异常类型Type2 第二节 异常处理语句一、try-catch语句关键字try后的一对大括号将一块可能发生异常的代码包起来,称为监控区域。Java方法在运行过程中出现异常,则创建异常对象。将异常抛出监控区域之外,由Java运行时系统试图寻找匹配的catch子句以捕获异常。若有匹配的catch子句,则运行其异常处理代码,try-catch语句结束。匹配的原则:

    18、如果抛出的异常对象属于catch子句的异常类,或者属于该异常类的子类,则认为生成的异常对象与catch块捕获的异常类型相匹配。第二节 异常处理语句【示例6.1】捕捉throw语句抛出的“除数为0”的异常。public class TestException public static void main(String args)int a=6;int b=0;try /try监控区域第二节 异常处理语句 if(b=0)throw new ArithmeticException();/通过throw语句抛出异常 System.out.println(a/b的值是:+a/b);catch(Arit

    19、hmeticException e)/catch捕捉异常 System.out.println(程序出现异常,变量b不能为0。);System.out.println(程序正常结束。);运行结果:程序出现异常,变量b不能为0。程序正常结束。第二节 异常处理语句本示例中,在try监控区域通过if语句进行判断,当“除数为0”的错误条件成立时引发ArithmeticException异常,创建ArithmeticException异常对象,并由throw语句将异常抛给Java运行时系统,由系统寻找匹配的异常处理器catch并运行相应异常处理代码,打印输出“程序出现异常,变量b不能为0。”try-ca

    20、tch语句结束,继续程序流程。事实上,“除数为0”等于ArithmeticException,是RuntimException的子类。而运行时异常将由运行时系统自动抛出,不需要使用throw语句。第二节 异常处理语句在Java中,异常一般通过try-catch语句来捕获。其语法格式如下:try /可能会发生异常的程序代码 catch(Type1 id1)/捕获并处置try抛出的异常类型Type1 catch(Type2 id2)/捕获并处置try抛出的异常类型Type2 第二节 异常处理语句二、try-catch-finally语句 /无论是否发生异常,都将执行的语句块 try块:用于捕获异常

    21、。其后可接零个或多个catch块。如果没有catch块,则必须跟一个finally块。catch块:用于处理try捕获到的异常。finally块:无论是否捕获或处理异常,finally块里的语句都会被执行。第二节 异常处理语句三个语句块的执行顺序如下:(1)try没有捕获到异常的情况:try语句块中的语句逐一被执行,程序将跳过catch语句块,执行finally语句块和其后的语句。(2)try捕获到异常,但catch语句块里没有处理此异常的情况:当try语句块里的某条语句出现异常,却没有处理此异常的catch语句块时,此异常将会抛给JVM处理,finally语句块里的语句还是会被执行,但fin

    22、ally语句块后的语句不会被执行。第二节 异常处理语句(3)try捕获到异常,且catch语句块里有处理此异常的情况:在try语句块中是按照顺序来执行的,当执行到某一条语句出现异常时,程序将跳到catch语句块,并与catch语句块逐一匹配,找到与之对应的处理程序,其他的catch语句块将不会被执行,而try语句块中出现异常之后的语句也不会被执行,catch语句块执行完后执行finally语句块里的语句,最后执行finally语句块后的语句。第二节 异常处理语句【示例6.5】除零异常。public class ExceptionTest public static void main(Stri

    23、ng args)try int a=12,b=0;int d;d=a/b;System.out.println(a+/+b+=+d);第二节 异常处理语句catch(arithmeticexception e)system.out.println(零不能做除数哦!);finally system.out.println(感谢使用本程序!);运行结果:零不能做除数哦!感谢使用本程序!大家也可以尝试将b变量改成1,看看运行结果是什么。第二节 异常处理语句throw语句用来明确地抛出一个异常,然后在包含它的所有try块中从内向外寻找与其匹配的catch语句块。程序员可以控制异常抛出的时机,在认为有异

    24、常发生的时候,可以通过throw手动地抛出异常。throw关键字抛出的对象必须是Throwable类型的对象。第二节 异常处理语句三、throw语句【示例6.6】一个throw的实例。public class ThrowDemo public static void main(String args)throws Exception /TODO Auto-generated method stub int a=-1;if(a0)throw new Exception(请输入正数!);第二节 异常处理语句【示例6.6】一个throw的实例。public class ThrowDemo publi

    25、c static void main(String args)throws Exception /TODO Auto-generated method stub int a=-1;if(a0)throw new Exception(请输入正数!);之前的程序,异常都是Java自动抛出的,而本示例中的程序,如果a小于0,那么将手动地抛出一个异常。第二节 异常处理语句如果一个方法可能导致异常但又不想处理它,此时可在方法声明中包含throws子句,当发生异常时,由调用者处理。比如,汽车厂商在生产汽车的时候发现了一个异常,但是他们不想处理,就可以在说明书中标出,让买车的人自己去处理这个异常。第二节 异

    26、常处理语句四、throws语句Java异常处理的特点如下:(1)把异常封装成异常类(把各种不同的异常情况进行分类,用Java类来标识异常情况,这种类被称为异常类),可以充分地发挥扩展和可重用的优势。(2)异常流程和代码的正常流程代码分离,提高了程序的可读性,简化了程序的结构。(3)可以灵活地处理异常。如果当前方法能处理异常,就捕获并处理它。如果捕获到的异常自己没有能力处理,则抛出异常,由方法的调用者来处理。第二节 异常处理语句五、Java异常处理的特点第三节 Java语言概述第三节 创建用户自定义异常类可以通过继承Exception或它的子类来实现自己的异常类。一般而言,对于自定义的异常类会设

    27、计两个构造器:一个默认的不带参数的构造器和一个带参数的构造器,后者用于传递详细的出错信息。在程序中使用自定义异常类的步骤如下:(1)创建自定义异常类。(2)在方法中通过throw关键字抛出异常对象。(3)如果在当前抛出异常的方法中处理异常,则可使用try-catch语句捕获并处理;否则在方法的声明处通过throws关键字指明要抛出给方法调用者的异常,继续进行下一步操作。(4)在出现异常方法的调用者中捕获并处理异常。第三节 创建用户自定义异常类创建用户自定义异常类【示例6.7】一个用户自己的异常类。public class MyException extends Exception public MyException()super();public MyException(String msg)第三节 创建用户自定义异常类 super(msg);public String toString()return 发生了除数为0的异常;第三节 创建用户自定义异常类制作者:xxxxx

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:《基于任务驱动模式的Java程序设计》课件第六章.pptx
    链接地址:https://www.163wenku.com/p-7924390.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库