第五讲 异常(JAVA网络编程技术).ppt

  1. 1、本文档共33页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第五讲 异常(JAVA网络编程技术)

第五讲 异常 什么是异常 异常的处理 使用预定义的异常 处理的规则 什么是异常 异常(Exception)是程序执行过程中出现的非正常事件,即各种意外情况。比如说: ① 用户输入出错 ② 所需文件找不到 ③ 运行时磁盘空间不够 ④ 内存不够 ⑤ 算术运算错 (数的溢出,被零除…) ⑥ 数组下标越界 …… 什么是异常 当Java程序出现以上的错误时,就会在所处的方法中产生一个异常对象。这个异常对象包括错误的类型,错误出现时程序的运行状态以及对该错误的详细描述。 为什么需要异常 作为面向对象的编程语言,Java程序在运行过程中遇到的各种异常情况也是通过对象表示的。 在软件中通过一类特殊的对象——异常将这些特殊情况传递给使用该软件包的程序,由其决定如何处理。 异常类的结构 异常类的结构 Throwabal类包括两个子类:Error和Exception。 Error类用于表示一些比较严重的错误,难以恢复,程序员一般不用处理这些错误。 Exception类一般代表程序设计或实现方面的问题。 Exception类包括两个子类:RuntimeException和IOException 例8-4 。 异常类的结构 RuntimeException类所表示的异常,只要程序设计没有问题都不会产生,对这些异常一般不做处理,以便问题能自然暴露出来。 IOException类代表输入输出操作产生的异常。这些异常一般是由用户环境而非程序本身问题造成的,JDK中一般强制调用者在使用时作处理。 异常处理机制 抛出(throw)异常:   在Java程序的执行过程中,如果出现了异常事件,就会生成一个异常对象。生成的异常对象将传递给Java运行时系统,这一异常的产生和提交过程称为抛出(throw)异常。 两种处理异常的机制: ◇ 声明抛出异常:   如果一个方法并不知道如何处理所出现的异常,则可在方法声明时,声明抛出(throws)异常。这是一种消极的异常处理机制。 异常处理机制 两种处理异常的机制:   ◇ 捕获异常:   当Java运行时系统得到一个异常对象时,它将会沿着方法的调用栈逐层回溯,寻找处理这一异常的代码。找到能够处理这种类型的异常的方法后,运行时系统把当前异常对象交给这个方法进行处理,这一过程称为捕获(catch)异常。这是积极的异常处理机制。如果Java运行时系统找不到可以捕获异常的方法,则运行时系统将终止,相应的Java程序也将退出。 如何创建和使用异常 使用异常可从编写软件包者和使用软件包者两个角度来看: 编写软件包者需要将其难以处理的情况定义为异常类,在软件包中碰到对应的情况时就创建相应的异常对象,并通过关键字throw关键字抛出。 软件包的使用者在使用软件包时就可以根据一定的方法获得该异常对象,从而知道这是一个什么样的情况,并根据需要作处理了。 异常的捕获 try{ 可能产生异常的代码 } catch(异常类型1 变量) { 调用者对异常的处理 } catch(异常类型2 变量) { 调用者对异常的处理 } 例8-5。 多个catch的匹配 catch 语句的顺序:   捕获异常的顺序和catch语句的顺序有关,异常对象产生后,将按照次序一个一个匹配,一旦匹配成功,其余的catch语句将不再继续和其匹配。因此,在安排catch语句的顺序时,首先应该捕获最特殊的异常,然后再逐渐一般化。也就是一般先安排子类,再安排父类。 finally 中的内容总会执行到,甚至当try中执行 到return语句也会先将finally执行完再返回执 行return。 finally总会执行,除了一种情况:程序执行到 System.exit(),这时程序会立刻退出。 例8-7。 方法相互调用及异常处理规则 程序从main开始执行,若其中执行了方法go1(),而go1()又调用了方法go(),在方法go()的语句执行时有异常抛出,则该异常将根据调用关系一层一层向外抛出,直到某个方法将其捕获,若所有的方法都为捕获,则程序将非正常退出。 程序流程图如下图所示。 例8-8、8-9、8-10。 方法相互调用及异常处理规则 强制处理 Java中可以在方法(函数)定义中加入throws关键字声明抛出异常来实现强制处理。 实现强制处理的方法在使用时必须对其进行异常处理,否则编译出错。 处理的办法有两种:1、try…catch语句处理 2、在调用该方法的方法声明中继续声明抛出异常。 例8-12、8-13、8-14、8-15。 用户定义的异常 1、定义Exception子类,代表异常类型 2、在适当的时候创建并抛出异常对象。 3、调用者处理异常 例8-1。 class MyDateException extends

文档评论(0)

wyjy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档