Java语言程序设计 教学课件 作者 于红 第7章__Java异常处理.pptVIP

Java语言程序设计 教学课件 作者 于红 第7章__Java异常处理.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
7.1 异常的概念 1.异常的定义 什么是异常?异常,也称为例外,是指由于不可预知的错误导致正常的指令流异常中断的事件。 例如:除数为零、数组访问越界、打开一个不存在的文件等都会产生异常。 【例7-1】除数为零产生的异常。 2.异常类及其层次结构 为处理各种原因引起的异常,Java提供了定义各种异常的异常类,异常就是这些异常类的实例。任何异常对象都是java.lang.Throwable类或其子类的对象。异常类的层次关系如图 Throwable类是Java异常类体系中的根类,它有两个子类: (1)Error类:Error类及其子类的对象代表了程序运行时Java系统内部的错误,程序员一般不用关心这样的错误,因为一旦真的发生了这类错误,程序员除了告诉用户发生了错误并试图关闭程序的运行之外,也没有其他更好的办法。 (2)Exception类:Exception类及其子类的对象是程序员应该认真关心并尽可能加以处理的。这种错误可能是由于程序员设计程序时没考虑周全造成的,程序员修改程序可以消除这类异常。Exception类有很多子类,其中RuntimeException类表示Java程序运行时产生的错误,主要包括:错误的类型转换、数组访问越界、访问空指针等;IOException类及其子类对象表示一个I/O错误,程序员应在程序中进行处理。 7.2 异常处理机制 Java编程语言为程序员提供一种解决异常的方法。当程序遇到异常时,会产生并抛出一个信号(异常),然后通过try-catch语句捕获这个信号(异常),这样就可以根据这个信号(异常)的不同进行相应的处理,称之为异常处理机制。异常处理机制包括: 1)异常的捕获处理(try-catch) 2)异常的抛出(throw) 3)异常的声明/报告(throws) 4)异常的定义(异常类) 7.2.1 异常的捕获 1.格式: try { // 可能会产生异常的程序代码 } catch (Exception1 e) { // 处理异常Exception1的代码 } catch (Exception2 e) { //处理异常Exception2的代码 } finally{ //通常是释放资源的程序代码 } 2.说明: (1) 整个语句由try块、catch块和可以默认的finally块3部分组成。 (2)try块:将可能产生异常的程序代码放在此处,该段代码是程序正常情况下应该要完成的功能,try块的范围由具体程序决定。 (3) catch块:是由异常情况及相应处理代码组成的列表,将程序员要处理的异常和该异常的处理代码列于此处。其中catch后括号内需要且只能有一个参数,参数类型为任何一种异常类(可以为7.3节阐述的自定义异常),该参数决定了该catch块能捕获并处理哪种异常;参数名就是被捕获异常对象的名字,处理异常时,常用的方法包括: ? getMessage()方法:显示该异常的简要信息。 ? toString()方法:可以得到关于异常的稍详信息,除了可以得到前一个方法的信息外,还包括异常类型信息。 ? printStackTrace( )方法:显示导致异常的方法调用序列。 (4) finally块:无论是否会出现异常,此处的代码都会被执行。如果在try块中申请了一些资源,在使用资源之后必须释放这些资源,但是使用资源过程中可能会出现异常,通常把释放资源的程序代码放到此处,以保证无论是否出现异常资源都能被释放。finally块可以不写。 (5) try-catch-finally语句的执行过程:首先执行try块中的代码,如果一切正常,则跳过catch块,执行finally块中的代码,执行完后,该语句才算执行完成。若执行try块时产生异常,则立即跳转到catch块,与catch块列表中的异常对象类型进行匹配,如果匹配成功,那么该catch块中语句就被执行,其后面的其他catch块语句不再被执行。执行完catch块后,跳转到finally块,执行其中的程序代码,执行完成后,该语句才算执行完成。若找不到与产生的异常相匹配的catch语句块,则先执行finally块中的代码,然后立即跳到包含该try-catch-finally语句的外层try-catch-finally语句的catch块,继续上述匹配过程,若外层try-catch-finally语句的catch中仍没有匹配上,则继续向外层跳。这个过程要一直延续到异常被处理。如果异常一直没被处理,该异常就中断程序。 (6) 在嵌套调用时try-catch-finally语句的执行过程:如果main()方法调用方法first(),然后first()方法调用second()方法。如果在second()中发生异常,那么首先要看second

文档评论(0)

118压缩包课件库 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档