chapter10 异常处理.ppt

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

本章知识点 Java中异常处理的策略 异常分类 异常继承层次结构 未检查异常,已检查异常,两种异常的编程原则 异常的捕获处理 try-catch-finally语句块的功能 再次抛出异常 异常对象的生成方式 再次抛出异常对象的策略 自定义异常类型 使用异常机制的建议 10.1 异常处理概述 异常(Exception):是指程序在运行过程中出现的不正常情况或错误。 例如:除0溢出、数组越界、文件找不到……,这些错误的发生将阻止程序的正常运行。 为了加强程序的健壮性(robust),程序设计时必须考虑程序在运行时可能发生的异常情况并做出相应的处理。 异常机制提供了程序退出的安全通道。当出现错误后,程序执行的流程发生改变,程序的控制权转移到异常处理器。异常处理可以提高系统的容错性。 10.1 异常处理概述 传统的处理”异常”的办法 函数返回一个特殊的结果来表示出现异常(通常这个特殊结果是大家约定俗成的),调用该函数的程序负责检查并分析函数返回的结果。 弊端 出现混淆:例如函数返回-1代表出现异常,但是如果函数确实要返回-1这个正确的值时就会出现混淆。 可读性降低:程序代码与处理异常的代码混合在一起。 对使用者的要求提高:由调用函数的程序来分析错误,要求程序员对函数有很深入的了解。 10.1 异常处理概述 Java的异常处理策略 利用面向对象的方法来处理异常。当出现异常情况时,JVM产生一个Exception对象,并交由异常处理程序处理,异常处理程序是使程序得以恢复正常运行的处理过程。 10.1 异常处理概述 Java异常处理机制 抛出(throw)异常:发生异常的方法(或者JVM)生成一个代表该异常的对象(它包含了异常的详细信息),并把它交给运行时系统,运行时系统寻找相应的代码来处理这一异常。生成异常对象并把它提交给运行时系统的过程称为抛出异常。 10.1 异常处理概述 捕获(catch)异常:运行时系统寻找相应的代码来处理一个异常,系统在方法的调用栈中查找,从产生异常的方法开始进行回溯,沿着被调用的顺序往前寻找,直到找到包含相应异常处理的方法为止。如果该异常未进行成功捕获,则程序将终止运行。 10.1 异常处理概述 【例10-1】一个未被捕获的异常:被零除。 10.1 异常处理概述 【例10-2】一个被捕获的异常:被零除。 ?10.2 异常分类 Java的异常是一个对象,所有的异常都直接或间接地继承自Throwable类。 Throwable类的继承层次结构 ?10.2 异常分类 Error类及其子类:由JVM生成并抛出,描述了Java运行系统中的内部错误以及资源耗尽的情形,如虚拟机错误、动态链接失败等。Error都是严重的、不可恢复的,如果出现这种错误,除了尽力使程序安全退出外,程序员无法通过程序的手段解决。所以,Java程序不应捕获Error。 Exception类及其子类:Java程序中可能发生的异常,程序员可以通过程序捕获并予以处理。 10.2 异常分类 Java中Exception的分类 RuntimeException异常 所有派生自RuntimeException类和Error类的异常。 由程序员设计疏忽误导致的异常,又称为(程序员)未检查性异常(unchecked exception)。 除以0:ArithmeticException 数组访问越界:ArrayIndexOutOfBoundsException 访问空指针:NullPointerException 如果出现RuntimeException异常,就一定是程序员的问题。虽然编译器不要求一定对其进行异常处理,但是,程序员应该主动地对其进行处理。 10.2 异常分类 Java中Exception的分类 非RuntimeException异常 由于某些特殊情况而导致的异常,也称为(编译器)已检查性异常(checked exception)。 试图打开不存在的文件: FileNotFoundException。 试图进行网络操作,但网络可能不通: IOException。 试图读取文件内容,但文件已到尾部: EOFException 。 试图根据给定的字符串查找Class对象,而这个字符串表示的类可能不存在: NoClassDefFoundException。 此类编译器要求程序员必须为其提供异常处理,否则无法通过编译。 10.2 异常分类 两种异常的编程原则 必须处理(编译器)已检查异常 选择性处理(程序员)未检查异常 10.3 异常的捕获处理 异常处理块的一般形式 10.3 异常的捕获处理 try-catch-finally执行的过程 进入try语句块,执行其中的各语句。 如果一个异常被抛出,try语句块中的代码停止执行,转而执行ca

您可能关注的文档

文档评论(0)

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

你好,我好,大家好!

版权声明书
用户编号:7140162041000002

1亿VIP精品文档

相关文档