第19章--异常处理.pptVIP

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第19章--异常处理

第19章 异常处理 天有不测风云,人有旦夕祸福,Java的程序代码也如此。虽然每个程序员都想编写出完美而没有bug的代码,但实际上看,这似乎是一种幻想。所以对于程序员来说,在编程过程中,首先应当尽可能去避免错误和异常的发生,对于不可避免、不可预测的情况则再考虑异常发生时如何处理。 19.1 Java异常 异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的。有些异常需要处理,有些则不需要处理,为了加强程序的鲁棒性,程序设计时必须考虑到可能发生的异常事件并做出相应的处理。在Java语言中,产生异常现象的错误大体分为3类:编译错误、运行错误和逻辑错误。 19.1.1 Java程序的编译错误 编译错误是由于所编写的程序存在语法问题,未能通过由源代码到字节码的编译而产生的,它由语言的编译系统负责检测和报告。此类错误在编译的时候会被检查出来,并不会生成运行代码,只有更正程序中的语法问题后才可以运行程序。下面列举部分常见编译错误。 1.大小写混淆 2.数据类型与变量类型不符 3.使用未声明的变量 19.1.2 Java程序的运行错误 运行错误是指程序在执行过程中发生的错误,它会中断程序的正常执行。例如,计算时除数为零、数组下标越界、文件没找到等。这类错误在编译程序时一般是无法发现的。下面列出两种常见的运行错误。 1.数组下标越界 2.除数为零 19.1.3 Java程序中的逻辑错误 逻辑运行错误是指程序不能实现编程人员的设计意图和设计功能而产生的错误,即程序运行后没有得到预期的结果。该类错误从语法上来说是有效的,只是程序在逻辑上存在着缺陷。通常,逻辑错误不会产生错误提示信息,所以错误较难排除。下面列出2种个常见的逻辑错误。 1.超出数据类型的取值范围 2.语句体忘记加大括号 19.1.4 Java程序的异常处理机制 在Java语言中,当程序执行中发生错误时,错误事件对象可能导致的程序运行错误称为异常(Exception,也称例外),异常会输出错误消息,使其知道该如何正确地处理遇到的问题。 19.1.5 Java语言中的异常处理类 Java通过面向对象的方法进行异常处理,把各种不同的异常进行分类,并提供了良好的接口。这种机制为复杂程序提供了强有力的控制方式。异常处理还有一个好处是在你不能确定和处理异常时,你可以不处理,而把问题提交上去。 19.2 处理Java程序中的异常 Java的异常处理是通过5个关键词来实现的:try、catch、throw、throws和finally。一般情况下是用try来执行一段程序,如果出现异常,系统会抛出(throws)一个异常,这时候可以通过其类型来捕获(catch)它,或最后(finally)由默认处理器来处理。下面是Java异常处理程序的基本形式。 19.2.1 使用try-catch语句保护代码和捕获异常 异常处理的核心是try和catch,这两个关键字要一起使用。 19.2.2 使用多个catch子句 由单个代码段可能引起多个异常,处理这种情况时就需要定义两个或更多的catch子句,每个子句捕获一种类型的异常。当异常被引发时,每一个catch子句被依次检查,第一个匹配异常类型的子句被执行。当一个catch语句执行以后,其他的子句将被忽略。如果没有抛出异常,那么try代码块就会结束,并且会跳过它的所有catch语句,从最后一个catch后面的第一个语句继续执行。 19.2.3 使用finally子句 有时为了确保一段代码不管发生什么异常都要被执行,可以使用关键词finally来标出这样一段代码。 19.2.4 可嵌入的try块 一个try代码块可以嵌入到另一个try代码块当中。由于内部try代码块产生的异常如果没有被与该内部try代码块相关的catch捕获,就会传到外部try代码块。 19.3 抛出异常 对于处理不了的异常或者要转型的异常,在方法的声明处通过throws语句声明抛出异常,而throw语句就是用于在方法体内抛出一个异常。 19.3.1 使用throws声明可能会抛出异常的方法 如果在一个方法中生成了一个异常,但是这一方法并不确切地知道该如何对这一异常事件进行处理,这时,一个方法就应该声明抛出异常,使得异常对象可以从调用栈向后传播,直到有合适的方法捕获它为止。 19.3.2 使用throw抛出异常 前面的例子中所涉及的异常都是由Java虚拟机(JVM)自动产生的。抛出异常首先要生成异常对象,异常或者由虚拟机生成,或者由某些类的实例生成,也可以在程序中生成。手动抛出异常对象是通过throw语句实现的,但可以抛出的异常必须是Throwable或其子类的实例。 19.3.3 异常类常用方法 Exception类自己没有定义任何方法,

文档评论(0)

zijingling + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档