捕获异常的try语句.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编程时会遇到如下三种错误: 语法错误(syntax error) 没有遵循语言的规则,出现语法格式上的错误,可被编译器发现并易于纠正; 逻辑错误(logic error) 即我们常说的“bug”,意指编写的代码在执行后没有得到预期结果;可利用一些调试技巧查找定位; 运行时错误(runtime error) 在程序运行过程中,如果环境发现一个不可能执行的操作,就会阻止程序的继续运行。 2. 异常的类型 可控异常 可控异常又称必检异常,指编译器会强制程序员检查并处理它们。除了RuntimeException类及其子类意外的Exception类及其子类属于可控异常。 异常(Exception) 是在程序中可捕捉到的异常,是由程序和外部环境引起的错误,能通过应用程序处理或抛出。 例如: 不可控异常(unchecked exception) 不可控异常又称免检异常,包括: 系统错误(System Error) 是由Java虚拟机抛出并在Error类中描述;Error类描述内部的系统错误,这种错误很少发生。如果发生,除了通知用户以及尽量稳妥地结束程序外,几乎什么也不能做; 例如: 运行异常(RuntimeException) 是应用程序内部的异常情况,应用程序通常不能预测它们并且不能从中恢复。这些异常情况通常表示编程错误,比如逻辑错误、API的不正确应用、不合适的转换、访问一个越界数组或数值错误等。运行异常通常由Java虚拟机抛出。 应用程序能够捕获这种异常,但是消除导致异常的错误可能更有意义。 例如: Java的异常处理模型基于三种操作 声明异常 抛出异常 捕获异常 声明异常 在Java中,当前执行的语句属于某个方法。因此每个方法都必须说明它可能抛出的可控异常类型,以便通知方法的调用者。 因为系统错误和运行错误对任何代码都可能发生,因此Java不要求在方法中显示的声明Error和RuntimeException。 通常情况下,异常是由系统自动捕获的。在有些情况下,一个方法并不需要处理它所生成的异常,而是向上传递,由调用该方法的其他方法来捕获该异常。如果该方法不捕获其中发生的可控异常,则必须表明它可以抛出这些异常。 throws子句 throws子句是为了指定某方法可以抛出的异常,需要在该方法声明中添加的子句。 格式: throws关键字和后面的异常清单表示该方法可能会抛出的异常; 异常清单以逗号分隔; 抛出异常 创建异常对象并将它交给运行时系统被称为抛出异常(throw an exception)。 在能捕获异常之前,必须有代码抛出异常。 在方法抛出一个异常之后,运行时系统尝试寻找对此异常处理的某些机制。对异常进行处理的这一套“机制”是一系列有序的方法,是为了到达发生错误的方法而调用的一系列方法,这个方法列表被称为“调用栈”(call stack)。 任何代码都可能抛出异常: 自行编写的代码; 其他人写的包(例如Java平台附带的包)中的代码; Java运行时环境 不管是什么代码抛出了异常,都是使用throw语句抛出的。 throw语句 格式: throw语句需要单一实参:一个可抛出的对象。 该对象是Throwable类的任何子类的实例。 语句格式 处理步骤: 程序运行过程中,try后面的各catch块不起作用。 如果try块内出现了异常,系统将终止try块代码的运行,自动跳转到对应的catch块中,执行该块的代码。 异常处理结束之后,程序从try块语句代码之后继续执行。 例程 例程 用catch语句捕捉异常时,若找不到相匹配的catch语句,则系统将执行默认的异常处理,这与不处理异常相同。 当有多个catch语句时,系统将依照先后顺序逐个对其进行检查,执行第一个匹配的catch语句,其余的语句将不再执行。因此需要注意类型之间的层次关系。一般来说处理子类异常的catch语句必须位于父类异常的catch语句之前。 除了输出错误消息或者终止程序之外,异常处理代码能够进行更多操作,它们可以进行错误恢复、提示用户作出决定,或者使用链式异常把错误传递给更高级别的处理器。 finally语句块 finally为最终处理的代码段,是个可选项。如果包含有finally块,无论异常是否发生,或者即使出现未预料到的异常,也都必须执行finally的代码块。 除了处理异常之外,finally块还可以避免因清理代码而偶然被return、continue或者break绕过。 在上述的例子中,可能有三种方法退出try块: 抛出异常1; 抛出异常2; 所有语句成功执行,try块正常退出。 不管以哪种方式退出,都应该关闭已经打开的资源。finally语句保证无论try块中的语句正常执行,还是发生两种类型的异常,系

文档评论(0)

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

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

1亿VIP精品文档

相关文档