1 / 53

专题三 异常处理

专题三 异常处理. 案例一 异常处理. 上章回顾. 抽象 是认识世界,表达思想的一种方式 目的是了解事物的特征与本质,并基于已有事物创建新的事物 学习创建抽象类 抽象类和抽象方法 (abstract 关键字) 理解接口的概念及特征 数据传输的通道,对外提供服务并隐藏实现细节 标准、规范、契约,稳定、不易改变 掌握接口在 Java 开发中的具体应用 创建接口( interface 关键字) 实现接口( implements 关键字). 专题目标. 本专题主要介绍应用 Java 语言提供的异常处理机制处理运行时错误的方法。具体包含如下内容:

ingrid
Download Presentation

专题三 异常处理

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 专题三 异常处理 案例一 异常处理

  2. 上章回顾 • 抽象 • 是认识世界,表达思想的一种方式 • 目的是了解事物的特征与本质,并基于已有事物创建新的事物 • 学习创建抽象类 • 抽象类和抽象方法(abstract关键字) • 理解接口的概念及特征 • 数据传输的通道,对外提供服务并隐藏实现细节 • 标准、规范、契约,稳定、不易改变 • 掌握接口在Java开发中的具体应用 • 创建接口(interface关键字) • 实现接口(implements关键字)

  3. 专题目标 • 本专题主要介绍应用Java语言提供的异常处理机制处理运行时错误的方法。具体包含如下内容: • 1. 理解异常的概念与特点 • 2. 掌握Java语言处理运行时错误的方法 • 3. 学习使用日志工具记录程序异常

  4. 本章目标 • 理解异常的概念 • 学习Java异常体系结构 • 掌握Java中的异常处理方法 • 自身处理(try、catch、finally关键字) • 显式抛出(throw、throws关键字) • 学习什么是日志 • 了解使用JDK提供日志工具记录程序异常

  5. 工作任务 3-1 • 为了配合甲型H1N1流感的检测工作,“未来之星”医学研究所决定开发一套人体电子测温系统。该系统应具备以下的功能: • 1. 可以手工设置预警温度 • 2. 可以存储最近三个体温测量结果值 • 3. 当体温超过预警温度时,测温系统会发出“嘟…嘟…嘟…”的警报音

  6. 工作任务 3-2 • 请根据以上要求设计并实现: • Person类,该类封装了体温检测人的特征,包括: • 属性:姓名、身体温度【初始化为36.5℃】 • 行为:发烧 • Thermomer类,该类封装了电子测温计的特征,包括: • 属性:预警温度【默认37.0℃】、最近的检测结果 • 行为:测量人体温度、显示最近的检测结果 • H1N1Exception自定义异常类,封装了预警信息

  7. 工作任务 3-3 • 参考实现结果

  8. 相关实践10-1 • 1.创建名为subject3的Java项目,并在src源文件夹下创建Person类

  9. 相关实践10-2 • 创建Person类-2

  10. 相关实践10-3 • 2.创建H1N1Exception异常类 创建自定义异常

  11. 相关实践10-4 • 3. 创建Thermometer温度计类-1 :

  12. 相关实践10-5 • 创建Thermometer电子温度计-2 处理异常

  13. 相关实践10-6 • 创建Thermometer电子温度计-3:

  14. 相关实践10-7 • 4.创建H1N1Test测试类 :

  15. 相关实践10-8 • 测试类的运行结果

  16. 相关实践10-9 • 使用日志工具类记录测量结果

  17. 相关实践10-10 • 再次运行测试类的结果

  18. 总结-1 • 异常的概念 • 程序的运行时错误 • 学习Java异常体系结构 • Throwable • Error • Exception • RuntimeException及其子类 • 受检异常 • 掌握Java中的异常处理方法 • 自身处理(try、catch、finally关键字) • 显式抛出(throw、throws关键字) • 根据需要创建自定义异常

  19. 总结-2 • 日志的概念 • 程序运行过程中输出的额外信息,记录了程序的运行情况 • 了解JDK提供的日志工具类 • Logger类

  20. 异常-1 • 生活中的异常 • 在始料未及的情况下出现的各种问题 如何对待这些突发事件?!

  21. 异常-2 • 如何处理异常? • 未雨绸缪,居安思危 • 尽可能消除出现异常的各种因素,避免异常的发生。 • 亡羊补牢,化险为夷 • 当异常发生时,应采取正确的方式进行处理。 • 及时求助,转危为安 • 如果对已发生的异常情况没有能力处理,应及时向第三方求助,让有经验的部门或系统帮助进行解决。

  22. 异常-3 • 程序开发中的错误 • 语法错误 • 导致程序无法通过编译 • 运行时错误 • 导致程序异常终止 • 逻辑错误 • 运行的结果不正确

  23. Java异常体系结构-1 • Java中的异常 • Java是一门具有面向对象特征的编程语言,所以使用面向对象的思想表示并处理程序中产生的异常。 • 待解决的问题 • 如何表示异常? • 将异常根据特征分类,将异常信息封装到对象中 • 异常产生时怎么办? • 为开发人员提供了完善的异常处理机制

  24. Java异常体系结构-2 • Java中的异常体系结构

  25. Java异常体系结构-3 • Throwable类 • 所有异常类的父类,位于java.lang包中。它的实例是具体的异常对象,封装了特定的异常信息。 • 方法 • getMessage():获取异常对象封装的信息。 • printStackTrace():打印方法调用栈中的详细异常信息。在程序开发中的调试阶段使用,可以跟踪错误产生的位置。 • Throwable类有两个子类 • Error类 • Exception类

  26. Java异常体系结构-4 • Error类 • 代表系统级别的严重错误,应用程序无法处理。例如VirtualMachineError、OutOfMemoryError等 • 出现Error错误时,建议终止应用程序 • Exception类 • 代表应用程序级别的错误,可以被捕获并处理 • 应尽可能处理Exception类型的错误,以保证程序出现异常后仍能正常运行或结束 • Exception类分为运行时异常和受检异常

  27. Java异常体系结构-5 • 运行时异常 • 包括RuntimeException类及其子类。例如NullPointerException、ClassCastException、IndexOutOfBoundsException。 • 不必显示处理,编译器也不进行检查 • 受检异常 • 除RuntimeException类之外的其他Exception(及其子类) • 必须进行显示处理,否则编译出错

  28. Java异常体系结构-6 • 常见的运行时异常类

  29. 自定义异常-1 • 为什么创建自定义异常? • JDK中提供的异常类只能表示有限的错误种类,对于特定的问题领域需要更加具体的描述信息 • 如何创建自定义异常? • 基于Exception类进行扩展 • 如何使用自定义异常? • 根据条件显式抛出自定义异常的对象

  30. 自定义异常-2 • Exception类的构造方法

  31. 自定义异常-3 • 基于Exception类创建自定义异常

  32. 处理异常-1 • Java中的异常处理机制 • 将异常处理与程序的正常流程分离,使得逻辑更加清晰,有利于系统将来的维护。 • 异常处理的方式比较灵活。可以考虑让代码段自己处理产生的异常,也可以把异常抛给相关的调用者进行处理。 • 与异常处理相关的关键字 • try、catch、finally • throw、throws

  33. 处理异常-2 • 自身处理-1 • try...catch结构 出现异常时,控制权将转移至catch块

  34. 处理异常-3 • 自身处理-2 • try…catch结构 • 使用try块将可能出现异常的代码包围 • 如果需要处理异常,在try块后添加至少一个catch块 • 注意: • try块和catch块都不能单独使用 • try块后可以跟随一个或多个catch块 • catch语句块必须跟在一个try块后面

  35. 处理异常-4 • 问题: 如果汽车启动或运行时出现了问题将不会执行stop方法!

  36. 处理异常-5 • 自身处理-3 • try…catch…finally结构 • 为了保证必要的步骤在异常出现后仍旧可以被执行,Java异常处理机制提供了try…catch…finally结构。

  37. 处理异常-6 • 自身处理-4 • try…catch…finally结构 如果汽车启动或运行时出现了问题也能确保汽车停下来。

  38. 处理异常-7 • 自身处理-4 • try…catch…finally结构 • 注意: • finally块不能单独使用 • finally块和catch块都是可选块 • 如果使用,它必须跟在一个try块之后,且只能出现一次 • 无论是否出现异常,finally块中的代码一定会被执行

  39. 处理异常-8 • 调用者处理-1 • 除了方法自身可以处理异常之外,还可以将产生的异常交由方法的调用者去处理。 • 为什么让调用者去处理呢? • 方法本身不具备处理某种异常的能力 • 集中处理运行时异常,减轻程序员的编码工作,提高代码的可读性 问题:如果碰到了司机无法处理的严重问题又该怎么办呢? (如机械故障、失火等)

  40. 处理异常-9 • 调用者处理-2 在方法声明处使用throws关键字向调用者说明可能抛出的异常类型 根据不同的情况,使用throw关键字抛出指定的错误对象

  41. 处理异常-10 • 对于受检异常必须“显式处理” • 使用try…catch结构捕获并处理错误 • 在方法声明中加入throws关键字,向方法调用者说明可能抛出异常的种类 • throw与throws的区别 • throw用于显式抛出异常对象,只能用于方法体内; • throws用来说明方法可能会抛出的异常对象,只能出现在方法声明处。

  42. 日志-1 • 什么是日志? • 程序运行过程中输出的额外信息 Windows操作系统的“事件查看器”

  43. 日志-2 • 日志有什么用? • 帮助开发人员分析系统的缺陷,迅速修正错误,用户也可以从日志信息中得到详细的描述信息,以检测当前系统的状态。

  44. 日志-3 • 日志记录了哪些内容? 记录时间 记录类别 位置信息 记录内容

  45. 日志-4 • 使用Java日志工具类 • 从JDK1.4开始,Sun就在Java开发工具中提供了日志管理工具类。 • 日志工具类具有以下特点 • 日志管理工具一般都会具有以下的特点: • 可以方便控制日志的输出与否 • 可以方便的控制日志输出的级别 • 多种日志输出方式(控制台、文件、数据库) • 丰富的、可以自定义的输出格式 • 利用配置文件管理日志记录环境

  46. 日志-5 • 使用Java日志API的具体步骤-1 • 使用java.util.logging.Logger获得给定名字的日志记录器 • 日志记录器的命名与包名类似,可以具有一定的层次结构,但层次结构比包更强,即日志记录器之间可以建立类似继承的关系,因此父与子之前可以共享某些属性。

  47. 日志-6 • 使用Java日志API的具体步骤-2 • 设置或取得日志记录器的级别 • SEVERE:代表严重失败 • WARNING:代表存在潜在问题 • INFO::代表普通消息 • CONFIG:代表静态配置消息(系统配置信息:例如CPU的类型) • FINE:跟踪信息级别,代表极少量(且非常重要)的消息 • FINER:代表一条相当详细的跟踪消息,例如输入、返回或抛出异常的日志记录调用 • FINEST:代表一条最详细的跟踪消息。 • SEVERE代表最高的级别,FINEST代表最低的级别。它们都可以通过java.util.logging.Level类以常量的方式直接调用。

  48. 日志-7 • 使用Java日志API的具体步骤-2 • 除了上述7个常量外,Level类还定义了另外两个常量: • ALL:代表记录所有消息 • OFF:代表关闭日志记录

  49. 日志-8 • 使用Java日志API的具体步骤-3 • 设置日志处理器(Handler)。日志处理器(Handler)代表日志输出的目的地。 • JDK提供的日志API支持将日志内容输出到控制台(ConsoleHandler)、文件(FileHandler)和网络(SocketHandler)

  50. 日志-9 • 使用Java日志API的具体步骤-4 • 使用Logger类提供log方法向日志处理器输出日志信息 • level代表输出日志的级别,msg代表具体的日志描述 注意:日志记录器只能输出大于等于当前级别的日志信息。

More Related